as转html5工具,将keras的h5模型转换为tensorflow的pb模型

背景:目前keras框架使用简单,很容易上手,深得广大算法工程师的喜爱,但是当部署到客户端时,可能会出现各种各样的bug,甚至不支持使用keras,本文来解决的是将keras的h5模型转换为客户端常用的tensorflow的pb模型并使用tensorflow加载pb模型。

h5_to_pb.py

from keras.models import load_model

import tensorflow as tf

import os

import os.path as osp

from keras import backend as K

#路径参数

input_path = 'input path'

weight_file = 'weight.h5'

weight_file_path = osp.join(input_path,weight_file)

output_graph_name = weight_file[:-3] + '.pb'

#转换函数

def h5_to_pb(h5_model,output_dir,model_name,out_prefix = "output_",log_tensorboard = True):

if osp.exists(output_dir) == False:

os.mkdir(output_dir)

out_nodes = []

for i in range(len(h5_model.outputs)):

out_nodes.append(out_prefix + str(i + 1))

tf.identity(h5_model.output[i],out_prefix + str(i + 1))

sess = K.get_session()

from tensorflow.python.framework import graph_util,graph_io

init_graph = sess.graph.as_graph_def()

main_graph = graph_util.convert_variables_to_constants(sess,init_graph,out_nodes)

graph_io.write_graph(main_graph,output_dir,name = model_name,as_text = False)

if log_tensorboard:

from tensorflow.python.tools import import_pb_to_tensorboard

import_pb_to_tensorboard.import_to_tensorboard(osp.join(output_dir,model_name),output_dir)

#输出路径

output_dir = osp.join(os.getcwd(),"trans_model")

#加载模型

h5_model = load_model(weight_file_path)

h5_to_pb(h5_model,output_dir = output_dir,model_name = output_graph_name)

print('model saved')

将转换成的pb模型进行加载

load_pb.py

import tensorflow as tf

from tensorflow.python.platform import gfile

def load_pb(pb_file_path):

sess = tf.Session()

with gfile.FastGFile(pb_file_path, 'rb') as f:

graph_def = tf.GraphDef()

graph_def.ParseFromString(f.read())

sess.graph.as_default()

tf.import_graph_def(graph_def, name='')

print(sess.run('b:0'))

#输入

input_x = sess.graph.get_tensor_by_name('x:0')

input_y = sess.graph.get_tensor_by_name('y:0')

#输出

op = sess.graph.get_tensor_by_name('op_to_store:0')

#预测结果

ret = sess.run(op, {input_x: 3, input_y: 4})

print(ret)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

暑假第六周

刘思翔来深圳玩,陪玩 转载于:https://www.cnblogs.com/cts1234/p/9664244.html

linux shell数据重定向(输入重定向与输出重定向)详细分析

在了解重定向之前,我们先来看看linux 的文件描述符。 linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文…

计算机科学技术的教育应用论文,浅谈计算机科学技术在计算机教学中的应用论文...

计算机科学,研究计算机及其周围各种现象和规律的科学,亦即研究计算机系统结构、程序系统(即软件)、人工智能以及计算本身的性质和问题的学科。计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法…

socketserver和socket的补充(验证客户端合法性)

一、socket的补充 1、参数 socket.socket(familyAF_INET,typeSOCK_STREAM,proto0,filenoNone) 参数说明: family 地址系列应为AF_INET(默认值ipv4),AF_INET6(ipv6),AF_UNIX,AF_CAN或AF_RDS。 (AF_UNIX 域实际上是使用本地 socket 文件来通信) type 套接字类型应为…

使用Spring Boot和Spring Security验证JWT

对于我当前的项目,我将使用Spring Boot设置REST API (最有可能使用BoxFuse运行)。 为了能够使用API​​端点,应用程序将检查传入的请求是否具有较早提供的有效JWT令牌 (由我信任的API服务提供)。 为了实现…

怎么查看linux文件夹下有多少个文件

ls | wc -w是查看有多少个文件及文件夹ls | wc -c这个查看目录下多少个文件. 使用wc命令 具体通过wc --help 可以查看。如:wc -l filename 就是查看文件里有多少行 wc -w filename 看文件里有多少个word。 wc -L filename 文件里最长的那一行是多少个字…

[转]xargs详解

为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以及与管道的区别。为什么要用x…

计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小

很多人都知道怎麽设置电脑桌面,可真正找到适合自己屏幕的可能很少,图片或大或小,小编为大家分享了设置桌面壁纸大小的方法,下面大家跟着小编一起来了解一下吧。设置桌面壁纸大小方法先查看自己电脑屏幕分辨率,方法&…

html5 clip,canvas中使用clip()函数裁剪方法

未使用裁剪绘制一个圆*{margin:0;padding:0;}html,body{width:100%;height:100%;overflow:hidden;background-color:#AFAFAF;}varcanvasdocument.getElementById(canvas),contextcanvas.getContext(2d);canvas.widthdocument.body.clientWidth;canvas.heightdocument.body.clie…

linux中管道符的简单使用

管道符,可以把两条命令连起来,具体来说有两种应用,如下: 1. 例如: ps aux | grep "media" 在 ps aux中的結果中查找media。 2. 例如: find . -name "*.cpp" | xargs grep "cl…

51 nod 1522 上下序列——序列dp

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId1522 很好的思想。考虑从小到大一对一对填数,这样也能对它的大小限制做一些操作了。 因为从小到大,所以只能全填在左边、全填在右边、两边各填一个。记录左边填到了哪个位…

spring tiles_Spring MVC 3模板和Apache Tiles

spring tiles对于任何Web应用程序,有效的设计考虑因素是使用模板引擎(或工具),并且由于具有Spring的“可插拔”特性,集成模板机制(例如Apache Tiles)确实要容易得多。 在这篇简单的文章中&#…

流程图用计算机if怎么写,if语句流程图

使用if语句实现单分支、两分支和使用switch语句实现多分支的程序程序1、if 语句有下面三种情况。第一种,条件成立就做。不成立就不做。if (条件)程序endif第二种,条件成立做“程序一”,不成立做“程序二”。不管条件成不成立都做。if (条件)程…

CENTOS 7 踢用户_从零学ELK系列(三):Centos安装Docker(超详细图文教程)

CSDN博客地址(关注,点赞)人工智能推荐GitHub(Star,Fork,Watch)【前言】为了更加真实的模拟生产部署环境,不仅需要Linux环境支持,而且ELK需要在不同的机器上部署;再重新装几台虚拟机&…

boost开发指南

C确实很复杂,神一样的0x不知道能否使C变得纯粹和干爽? boost很复杂,感觉某些地方有过度设计和太过于就事论事的嫌疑,对实际开发工作的考虑太过于理想化。学习boost本身就是一个复杂度,有魄力在项目中广泛采用boost复杂…

打游戏提示计算机丢失,Windows7电脑运行某游戏提示“计算机丢失mxvcp120.dll”怎么办...

许多用户都很喜欢在windows7系统中玩一些游戏,而在玩游戏的时候难免碰上一些错误提示,比如最近有windows7系统用户发现在运行某款游戏的时候,提示“计算机丢失mxvcp120.dll”,导致无法继续玩游戏,要怎么解决呢&#xf…

如何开发一个可运维系统的一点体会

本文来自网易云社区作者:施勇我们在开发一个复杂系统的时候,常常会强调服务化、模块化、松散耦合等要求以达到高可用、高可靠及高性能等目的;比较少的人会考虑到系统的方便部署配置和运维,至少是在刚开始设计系统的时候很少考虑到…

工程勘察设计收费标准2002修订版_全过程工程咨询收费模式超全解析

国内全过程工程咨询试点方案中收费标准比较全过程工程咨询是近两年提出的新的工程建设组织模式,它的管理机制、运行方式还处于探索阶段。各试点省、市相继发布了全过程工程咨询试点工作方案,对全过程工程咨询收费问题进行了积极探索。笔者整理了部分省市…

Java / Web项目中的NPM模块Browser-Sync

Browser-Sync是一个方便的基于Node.js的NPM模块,可用于更快的Web开发。 浏览器同步可在许多设备之间同步文件更改和交互。 最重要的功能是实时重新加载。 我们也可以在Java / Web项目中使用Browser-Sync。 Cagatay Civici创造了一个伟大的 视频教程如何在PrimeFace…

设置vs2008代码区的背景色

编写程序、调试代码时,是不是感觉文字的白色背景有些刺眼呢?vs2008 给我们提供了改变背景色的功能。 依次展开:工具->选项->环境->字体和颜色,可以看到下图所示设置框。 首先,在图中标记的“显示项”一栏选择…