将tensorflow模型打包成PB文件及PB文件读取方式

1. tensorflow模型文件打包成PB文件

import tensorflow as tf
from tensorflow.python.tools import freeze_graph

with tf.Graph().as_default():
  with tf.device("/cpu:0"):
    config = tf.ConfigProto(allow_soft_placement=True)
    with tf.Session(config=config).as_default() as sess:
      model = Your_Model_Name()
      model.build_graph()
      sess.run(tf.initialize_all_variables())

      saver = tf.train.Saver()
      ckpt_path = "/your/model/path"
      saver.restore(sess, ckpt_path)

      graphdef = tf.get_default_graph().as_graph_def()
      tf.train.write_graph(sess.graph_def,"/your/save/path/","save_name.pb",as_text=False)
      frozen_graph = tf.graph_util.convert_variables_to_constants(sess,graphdef,['output/node/name'])
      frozen_graph_trim = tf.graph_util.remove_training_nodes(frozen_graph)
      freeze_graph.freeze_graph('/your/save/path/save_name.pb','',True, ckpt_path,'output/node/name','save/restore_all','save/Const:0','frozen_name.pb',True,"")

2. PB文件读取使用

output_graph_def = tf.GraphDef()
with open("your_name.pb","rb") as f:
  output_graph_def.ParseFromString(f.read())
  _ = tf.import_graph_def(output_graph_def, name="")

node_in = sess.graph.get_tensor_by_name("input_node_name")
model_out = sess.graph.get_tensor_by_name("out_node_name")

feed_dict = {node_in:in_data}
pred = sess.run(model_out, feed_dict)

以上这篇将tensorflow模型打包成PB文件及PB文件读取方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例

    ckpt from tensorflow.python import pywrap_tensorflow checkpoint_path = 'model.ckpt-8000' reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path) var_to_shape_map = reader.get_variable_to_shape_map() for key in var_to_shape_map: print("tensor_

  • tensorflow模型保存、加载之变量重命名实例

    话不多说,干就完了. 变量重命名的用处? 简单定义:简单来说就是将模型A中的参数parameter_A赋给模型B中的parameter_B 使用场景:当需要使用已经训练好的模型参数,尤其是使用别人训练好的模型参数时,往往别人模型中的参数命名方式与自己当前的命名方式不同,所以在加载模型参数时需要对参数进行重命名,使得代码更简洁易懂. 实现方法: 1).模型保存 import os import tensorflow as tf weights = tf.Variable(initial_value

  • 从训练好的tensorflow模型中打印训练变量实例

    从tensorflow 训练后保存的模型中打印训变量:使用tf.train.NewCheckpointReader() import tensorflow as tf reader = tf.train.NewCheckpointReader('path/alexnet/model-330000') dic = reader.get_variable_to_shape_map() print dic 打印变量 w = reader.get_tensor("fc1/W") print t

  • tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式

    Google提供了一个工具,TensorBoard,它能以图表的方式分析你在训练过程中汇总的各种数据,其中包括Graph结构. 所以我们可以简单的写几行Pyhton,加载Graph,只在logdir里,输出Graph结构数据,并可以查看其图结构. 执行下述代码,将数据流图保存为图片,在目录F:/tensorflow/graph下生成文件events.out.tfevents.1508420019.XM-PC import tensorflow as tf from tensorflow.pyth

  • 详解Tensorflow数据读取有三种方式(next_batch)

    Tensorflow数据读取有三种方式: Preloaded data: 预加载数据 Feeding: Python产生数据,再把数据喂给后端. Reading from file: 从文件中直接读取 这三种有读取方式有什么区别呢? 我们首先要知道TensorFlow(TF)是怎么样工作的. TF的核心是用C++写的,这样的好处是运行快,缺点是调用不灵活.而Python恰好相反,所以结合两种语言的优势.涉及计算的核心算子和运行框架是用C++写的,并提供API给Python.Python调用这些A

  • 初探TensorFLow从文件读取图片的四种方式

    本文记录一下TensorFLow的几种图片读取方法,官方文档有较为全面的介绍. 1.使用gfile读图片,decode输出是Tensor,eval后是ndarray import matplotlib.pyplot as plt import tensorflow as tf import numpy as np print(tf.__version__) image_raw = tf.gfile.FastGFile('test/a.jpg','rb').read() #bytes img =

  • 将tensorflow模型打包成PB文件及PB文件读取方式

    1. tensorflow模型文件打包成PB文件 import tensorflow as tf from tensorflow.python.tools import freeze_graph with tf.Graph().as_default(): with tf.device("/cpu:0"): config = tf.ConfigProto(allow_soft_placement=True) with tf.Session(config=config).as_defaul

  • Java程序打包成带参数的jar文件实例代码

    这里我们通过Apache Commons CLI来完成目标功能,废话不多说直接上代码 所需的maven依赖 <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.4</version> </dependency> 这里我们贴出主类代码 Options opts = new Optio

  • tensorflow模型的save与restore,及checkpoint中读取变量方式

    创建一个NN import tensorflow as tf import numpy as np #fake data x = np.linspace(-1, 1, 100)[:, np.newaxis] #shape(100,1) noise = np.random.normal(0, 0.1, size=x.shape) y = np.power(x, 2) + noise #shape(100,1) + noise tf_x = tf.placeholder(tf.float32, x.

  • tensorflow将图片保存为tfrecord和tfrecord的读取方式

    tensorflow官方提供了3种方法来读取数据: 预加载数据(preloaded data):在TensorFlow图中定义常量或变量来保存所有的数据,适用于数据量不太大的情况.填充数据(feeding):通过Python产生数据,然后再把数据填充到后端. 从文件读取数据(reading from file):从文件中直接读取,然后通过队列管理器从文件中读取数据. 本文主要介绍第三种方法,通过tfrecord文件来保存和读取数据,对于前两种读取数据的方式也会进行一个简单的介绍. 项目下载git

  • C++下如何将TensorFlow模型封装成DLL供C#调用

    目录 生成dll 使用C#调用dll 生成dll IDE使用visual studio 2015. 首先新建一个C++win32工程,选择dll,包括导出符号,但不要预编译头. 模板会提供一个工程同名的头文件和一个源文件. 在源文件中将TensorFlow头文件和其他需要使用的头文件引用进来. 在源文件中定义需要export的函数. 在头文件中给出需导出函数的声明. extern 关键字后加“C”保证在C#调用时不生成中间函数名. 编译环境选择X64,配置好include.lib目录以及附加依赖

  • Python脚本文件打包成可执行文件的方法

    将Python脚本文件包装成可执行文件,其目的有二: 一则: 不需要依赖Python编译器就可以运行软件 二则: 不想让自己的源码公布出去 常用的工具有: py2exe.cx_freeze等 [工具:py2exe] 安装py2exe 安装该工具很简单: 只需要从官方网站:http://www.py2exe.org/下载与版本对应的安装程序,点击下一步即可完成安装. 安装后,执行import py2exe,不报错则表示安装成功! 复制代码 代码如下: >>> import py2exe 

  • Windows下将Python文件打包成.EXE可执行文件的方法

    在使用Python做开发的时候,时不时会给自己编写了一些小工具辅助自己的工作,但是由于开发依赖环境问题,多数只能在自己电脑上运行,拿到其它电脑后就没法运行了.这显得很不方便,不符合我们的初衷,那么有没有一种什么办法可以使我们编写好的程序,可以直接在各种windows下运行的呢? 答案是:有的,说到windows大家都能想到( .exe )这个东西吧!没错,就是把Python编写的代码打包成可执行的 exe 文件,直接在系统上运行,这个问题不久完美解决了吗? 下面就来讲讲如何实现,具体如下: 安装

  • Maven项目打包成可执行Jar文件步骤解析

    在使用Maven完成项目以后,如果是需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁琐的操作简单.我们可以通过插件完成这项工作,使用assembly插件.具体使用方式如下: 1.在项目中加入插件的依赖: <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2&l

  • java 文件流的处理方式 文件打包成zip

    目录 java 文件流的处理 文件打包成zip 1.下载文件到本地 2.java后端下载 3.文件打包成zip 后台多文件打包成zip返回流 前台提供按钮一键下载 java 文件流的处理 文件打包成zip 1.下载文件到本地 public void download(HttpServletResponse response){ String filePath ="";//文件路径 String fileName ="";//文件名称 // 读到流中 InputStr

  • 将Python脚本打包成exe文件

    目录 1.安装依赖 2.整合资源 3.修改脚本并测试 4.准备图标(可略过) 5.pyinstaller打包 6.结论 总结 相信很多朋友在用Python写完代码之后都迫不及待的想发给对象交流(装X),但是发源码又要求对方有对应的解释器,一般是行不通的,所以我们要把源码打包成可执行的.exe文件,方便广大用户使用. 1.安装依赖 打开命令行[开始->搜索->cmd] pip install pyinstaller 等待安装成功 2.整合资源 将代码所需要加载的文件资源[图片.因为.文档等]整合

随机推荐