tensorflow之pb文件保存与载入

Protobuf 动态加载 .pb 文件并操作 Message 之前写了《Protobuf 动态加载 .proto 文件并操作 Message》。文件之外,还有一种类似的方法。多了一步,但是在运行期加载更快。这种方法虽然比直接读取。文件,应该选择没有被依赖的。文件作为参数,并且添加。 阅读详情

pb是protocol(协议) buffer(缓冲)的缩写。TensorFlow训练模型后存成的pb文件,是一种表示模型(神经网络)结构的二进制文件,将图中的变量保存成为常量,便于调用,一般无法将pb文件映射成源代码。pb文件的能够保存tensorflow计算图中的操作节点以及对应的各张量,方便我们日后直接调用之前已经训练好的计算图。

注:pb文件可以在训练时直接保存,也可以用.ckpt文件转化为.pb文件。

准备所需的文件:

1、训练完成的.index,.data,.mate文件。

2、编写.ckpt文件转.pb文件的代码。

output_node_names = ["Input/X_placeholder", "Inference/output"]#指定输入输出节点名
def freeze_pb(pb_file,ckpt_path):

    with tf.name_scope('Input'):
        input_data = tf.placeholder(dtype=tf.float32,shape=[None, 784], name='X_placeholder')

    with tf.name_scope('Inference'):
        # batch:20 输入:784,通道:1,输出:10
        W = tf.Variable(initial_value=tf.random_normal(shape=[784,10], stddev=0.01), name='Weights')
        b = tf.Variable(initial_value=tf.zeros(shape=[10]), name='bias')
        print(W)
        logits = tf.matmul(input_data, W) + b
        pred = tf.nn.softmax(logits=logits,name='output')


    sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True))
    saver = tf.train.Saver()
    saver.restore(sess, ckpt_path)

    converted_graph_def = tf.graph_util.convert_variables_to_constants(sess,
                                                                       input_graph_def=sess.graph.as_graph_def(),
                                                                       output_node_names=output_node_names)

    with tf.gfile.GFile(pb_file, "wb") as f:
        f.write(converted_graph_def.SerializeToString())

注:

1、在将ckpt文件转为pb文件的时候,一定要将输入节点名称和输出节点名称与设计的网络中的输入节点名称和输出节点名称对应起来,否则会报错。例如这里将

Input/X_placeholder改为Input/X_placeholder_e时会有如下的报错。

AssertionError: Input/X_placeholdere_e is not in graph.

output_node_names = ["Input/X_placeholder", "Inference/output"]指定输入输出。

2、tf.graph_util.convert_variables_to_constants中的output_node_names变量来指定保存的节点名称而不是张量的名称,“Input/X_placeholder:0”是张量的名称而"Input/X_placeholder"表示的是节点的名称。在固化pb文件的时候用节点名称,在调用pb文件是使用张量名称。

执行上述代码后会在指定的目录下生成pb文件。

3、编写调用pb文件代码。

return_enement = ["Input/X_placeholder:0", "Inference/output:0"]#指定输入输出张量名称
def Load_PbFile(pb_file,image):
    imagedata=np.array(image).reshape([1,784])
    config = tf.ConfigProto()
    config.gpu_options.allow_growth = True


    with tf.gfile.FastGFile(pb_file, 'rb') as f:
        frozen_graph_def = tf.GraphDef()
        frozen_graph_def.ParseFromString(f.read())
        elements = tf.import_graph_def(frozen_graph_def,return_elements=return_enement)

    with tf.Session(config=config) as sess:
        sess.run(tf.global_variables_initializer())
        prob=sess.run([elements[1]],feed_dict={elements[0]:imagedata})

        tolist=list(prob[0][0])
        classes = tolist.index(max(tolist))
        print(classes)

这里return_enement = ["Input/X_placeholder:0", "Inference/output:0"]指定的是张量名称,区别于output_node_names = ["Input/X_placeholder", "Inference/output"],否则在运行时会出现TypeError: Cannot interpret feed_dict key as Tensor: Can not convert a Operation into a Tensor.的错误。

如何用Tensorflow训练模型成pb文件和和如何加载已经训练好的模型文件 这篇薄荷主要是讲了如何用tensorflow去训练好一个模型,然后生成相应的pb文件。最后会将如何重新加载这个pb文件。 首先先放出PO主的github: https://github.com/ppplinday/tensorflow-vgg16-train-and-test 其中的pitcute文件是狗和猫的图片分别15张一共30(别吐槽,只是为了练手学习的233333), train那个就 阅读详情

相关推荐

tensorflow保存数据为.pb格式和加载pb文件

最近接触了tensorflow的object detection API发现里面读取的预先训练模型都是pb格式。谷歌推荐的保存模型的方式是保存模型为 PB 文件,它具有语言独立性,可独立运行,封闭的序列化格式,任何语言都可以解析它,它允许其他语言和深度学习框架读取、继续训练和迁移 TensorFlow 的模型。它的主要使用场景是实现创建模型与使用模型的解耦, 使得前向推导 inference的代码...

fu6543210的博客 6万+

文件格式是.pb应该怎么查看?

如果.pb文件是TensorFlow的模型文件,并且你希望以图形化的方式查看模型的结构,你可以使用TensorBoard。- **TensorFlow模型**:如果.pb文件是TensorFlow的模型文件,你可以使用TensorFlow的Python API来加载和解析它。- **其他PB文件**:对于非TensorFlow的PB文件,你需要使用Google提供的Protocol Buffers库或相应的编程语言和库的API来解析它。总之,查看.pb文件的内容通常需要编程知识和相应的库或工具。

琳琳的博客 4639

【Tensorflow】关于pb和ckpt的保存于载入及ckpt转bp格式

参考:https://www.jianshu.com/p/c9fd5c01715eTensorFlow 模型保存与恢复 总结: ckpt:可直接载入训练 bp:格式保存的模型参数都已经转化为了常量(而不再是变量),但可以脱离会话(session)而存在,便于部署。 ckpt 转 bp:一般情况下,为了便于从断点之处继续训练,模型通常保存为 .ckpt 格式,而一旦对训练结果很满意之后...

qq_37791134的博客 884

Python读取及生成pb文件,pb与jsonStr互转,pb与dictJson互转,打包.exe/.sh并转换,很完美跨平台

Python读取及生成pb文件并转换jsonString,dictJson,打包.exe/.sh并转换,很完美跨平台 1. 读取pb及生成pb文件 2. pb文件转换jsonString 3. 二进制pb转换jsonString 4. 赋值(有空或者类型不对应会无法赋值及报错) 5. 打包exe/sh

qq_40985985的博客 2175

如何将keras训练好的模型转换成tensorflow的.pb的文件并在TensorFlow serving环境调用

首先keras训练好的模型通过自带的model.save()保存下来是 .model (.h5) 格式的文件 模型载入是通过 my_model = keras . models . load_model( filepath ) 要将该模型转换为.pb 格式的TensorFlow 模型,代码如下: 1 # -*- coding: utf-8 -*- 2 from keras.laye...

mouxiaoqiu的博客 1万+

tensorflow之保存为pb文件并进行预测(采用手写数字识别数据进行演示)

一、模型训练并保存为pb文件 1.完整代码 coding: utf-8 # In[2]: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import os import time # In[3]: # 载入数据集 mnist = input_data.read_da...

永远飞翔的鸟 1836

【TF笔记】之TensorFlow中模型的保存与载入

一、模型的保存与载入方式(一) 1、模型的保存 使用下面这两行指令对训练的模型进行保存 saver = tf.train.Saver() # 定义Saver用于保存模型 saver.save(sess,'models/my_model.ckpt') # 保存模型 以简单的手写字符识别(MNIST)为例,训练一个一层的神经网络: import tensorflow as tf f...

zhu_hongji的博客 1310

Claude + Figma MCP 实战教程

• 拥有 Figma 的 Dev 或 Full seat(专业/企业账号)权限 才能启用 Dev-Mode MCP 服务 。• MCP 是通过标准接口连接 Claude 与 Figma,效率高,但目前仍为 Beta,稳定性可能有限。3. 服务启动后,会在本地运行,比如 http://127.0.0.1:3845/mcp 。如果设置正确,会显示已连接的 figma-dev-mode-mcp-server  。• 如果多次转换复杂组件,可能需要多次选择与多次生成,建议合理拆分设计任务。

weixin_49869937的博客 4451

tensorflow 版本列表_使用Go语言上线TensorFlow模型

昨天搞了一天用Go语言部署TensorFlow模型,把整个过程记录一下,以备大家参考(现在没有题图,以后在搞一个图)。首先我们要有一个已经保存好的TensorFlow模型,也就是.pb文件。这个文件固化了计算图和权重,Go语言只需要根据这个代码跑相应的Session就行了。关于如何产生.pb文件,如果大家有兴趣的话可以私信我,我可以根据大家的需求情况写一份文档。具体部分可以参见tf.saved_m...

weixin_36332642的博客 152

RTL8306交换机芯片与FPGA联调实战:5个网口+1个MAC的配置避坑指南

本文详细解析了RTL8306交换机芯片与FPGA联调中的关键技术难点,特别是MAC5寄存器的配置陷阱和PHY页切换机制。通过实战案例和优化策略,帮助开发者高效配置5个网口+1个MAC的工业级网络设备,提升系统稳定性和实时性。

vodka的博客 1098

Supervisor 安装与使用

一、Supervisor 介绍 Supervisor 是一个用 Python 编写的进程管理工具,它可以用于监控和控制类 UNIX 操作系统上的多个进程。它是一个客户端/服务器系统,其中 Supervisor 的服务器端称为 supervisord,负责启动管理的子进程、响应客户端命令、重启崩溃或退出的子进程、记录子进程的 stdout 和 stderr 输出,以及处理子进程生命周期中的事件。客...

疯子丶pony的博客 3864

tensorflow保存提取ckpt和pb文件

元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019 目录 1.保存提取ckpt文件 保存ckpt 提取ckpt 2.保存提取pb文件 保存pb 提取pb 试验 保存为ckpt和pb 读...

VIEO 4246

LabVIEW Modbus TCP通信避坑指南:解决连接中断、服务器异常与自动重连问题

本文详细解析了LabVIEW环境下Modbus TCP通信的常见问题,包括连接中断、服务器异常等,并提供了自动重连机制的实现方案。通过优化错误处理、超时参数和资源管理,帮助开发者构建更稳定的工业级Modbus TCP客户端,显著提升通信可靠性。

weixin_42525211的博客 425

Tensorflow训练神经网络保存*.pb模型及载入*.pb模型

1 神经网络结构 1.0 保存*.pb模型 import tensorflow as tf from tensorflow.python.framework import graph_util from tensorflow.python.platform import gfile import numpy as np import os import matplotlib.pyplot as ...

天然玩家的博客 9453

【Attention Is All You Need】Transformer模型精读

Attention Is All You Need》这篇论文奠定了Transformer模型的基础,为深度学习的发展提供了新的方向。Transformer通过自注意力机制和并行化处理显著提升了计算效率和模型性能。然而,Transformer的广泛应用也带来了新的挑战,如计算资源的消耗和对长序列的处理能力等。随着技术的不断发展,研究人员已经提出了诸如Efficient Transformer、Reformer等变种,旨在提升Transformer的效率和适应性。

Lewiz_124的博客 1499

STM32F103 串口DMA + 空闲中断 实现不定长数据收发

文章目录1. 空闲中断1.1 uart_dma.c1.2 uart_dma.h1.3 main.c1.4 stm32f10x_it.c1.5 效果演示1.6 知识补充1.6.1 外设的基地址     DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU

夏夜晚风_的博客 3万+

Springboot2模块系列:tensorflow(载入pb模型)

1 神经网络结构 1.0 保存*.pb模型 import tensorflow as tf from tensorflow.python.framework import graph_util from tensorflow.python.platform import gfile import numpy as np import os import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties f

天然玩家的博客 6892

自动配胶机的PLC控制系统设计

我们根据自动配胶机的控制需求,编写了相应的PLC程序。PID温度控制算法的实现方面,我们采用了经典的PID控制算法,通过不断调整加热器的功率,实现对胶水混合温度的精确控制。在PLC程序中,我们编写了PID控制算法的程序模块,通过实时采集温度传感器的数据,计算温度偏差和偏差变化率,并根据PID控制算法计算出加热器的功率输出值,实现对温度的精确控制。在系统调试阶段,我们对自动配胶机的各个部分进行了详细的测试和调试,包括气路和液路的开关测试、传感器的精度测试、步进电机的位置和速度测试以及PLC程序的逻辑测试等。

lagougongzuoshi的博客 1228

Tensorflow模型保存与载入的两种办法

TensorFlow模型保存与加载的两种方法 1.saver.save/saver.restore: 这种方法保存的模型有四个文件: 其中model.ckpt为模型的名称 ...

qq_39775940的博客 2189

【FISCO-BCOS】 八、ubuntu配置Java环境

ubuntu配置Java环境需根据自己的java版本号进行细节修改,本文以jdk11.0.18版本为例。ps:通过此法还可以查看java安装路径,但必须是环境配置成功的情况下才能使用。二、添加Java环境路径。四、检查java环境设置。

naihe_fish的博客 4312

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TensorFlow 模型的保存与载入

参考学习博客: # https://www.cnblogs.com/felixwang2/p/9190692.html一、模型保存 1 # https://www.cnblogs.com/felixwang2/p/9190692.html 2 # TensorFlow(十三):模型的保存与载入 3 4 import tensorflow as tf 5 f...

weixin_30488085的博客 147

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

(tensorflow)模型的保存和载入

我们在上线使用一个算法模型的时候,首先必须将已经训练好的模型保存下来。tensorflow提供了两种保存模型的方式,一种是使用tf.train.Saver函数来保存TensorFlow程序的参数和完整的模型结构,保存的文件后缀为 “.ckpt”;另一种方式是将计算图保存在一个 “.pb” 文件中。 使用tf.train.saver()进行模型的保存 保存 其中需要注意的是: 变量在定义的时候必...

xhj_enen的博客 641

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

tensorflow模型保存与载入

用Tensorflow做一些事情,最近遇到的问题是训练到的模型怎么用? 网上搜了一下,最常用的就是使用tf.train.Saver()定义saver变量,然后分别使用saver.save()和saver.restore()载入。 保存代码: saver = tf.train.Saver() with tf.Session() as sess: sess.run(init) s...

u011049256的专栏 277

tensorflow模型加载与保存的两种方式

pass

ShenWeiKKX的博客 920

TensorFlow模型的保存和加载

  将训练好的模型参数保存起来,以便以后进行验证或测试,这是我们经常要做的事情。tf里面提供模型保存的函数是tf.train.Saver模块。模型保存先要创建一个Saver对象: saver = tf.train.Saver() 在创建Saver对象的时候,有一个参数经常会用到,就是max_to_keep,这个是用来设置保存模型的个数,默认为5,保存最近的5个模型。如果你想每训练一次(epoch)就想保存一次模型,则可以将max_to_keep设置为None或者0: saver = tf.train.Sa

健身房 1841

TensorFlow模型保存和载入方法汇总

目录 一、TensorFlow常规模型加载方法 保存模型 加载模型 1.不加载图结构,只加载参数 2.加载图结构和参数 3.简化版本 二、TensorFlow二进制模型加载方法 三、二进制模型制作 四、从图上读取张量 从二进制模型加载张量 从当前图中获取对应张量 从图中获取节点信息 一、TensorFlow常规模型加载方法 保存模型 tf.train...

识物专栏 3004
上一篇: Tensorflow之softmax应用实例
下一篇: 反向传播
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值