首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

加载的.pb文件的tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)为空

加载的.pb文件的tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)为空是因为.pb文件中不包含模型的变量集合。.pb文件是TensorFlow的模型导出文件,其中包含了计算图和模型的权重,但不包含变量集合。变量集合通常用于保存和恢复模型的参数。在加载.pb文件时,可以通过tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)来获取模型中的变量集合,但如果.pb文件中没有保存变量集合,那么该操作会返回空列表。

在TensorFlow中,可以使用tf.train.Saver来保存和恢复模型的变量集合。在保存模型时,可以将变量集合保存为.ckpt文件,然后再将.ckpt文件导出为.pb文件。这样,在加载.pb文件时,就可以通过tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)获取到模型的变量集合。

例如,可以使用以下代码保存模型的变量集合:

代码语言:txt
复制
# 创建Saver对象
saver = tf.train.Saver()

# 在会话中保存变量集合
with tf.Session() as sess:
    # 训练模型...

    # 保存模型的变量集合为.ckpt文件
    saver.save(sess, './model.ckpt')

然后,可以使用以下代码将.ckpt文件导出为.pb文件:

代码语言:txt
复制
# 导入TensorFlow的相关库
import tensorflow as tf
from tensorflow.python.framework import graph_util

# 加载模型的变量集合
saver = tf.train.import_meta_graph('./model.ckpt.meta')

# 创建默认的图
graph = tf.get_default_graph()

# 获取输入和输出的节点
input_node = graph.get_tensor_by_name('input:0')
output_node = graph.get_tensor_by_name('output:0')

# 将图中的变量转化为常量
output_graph_def = graph_util.convert_variables_to_constants(sess, graph.as_graph_def(), ['output'])

# 保存导出的.pb文件
with tf.gfile.GFile('./model.pb', "wb") as f:
    f.write(output_graph_def.SerializeToString())

在加载.pb文件时,可以使用以下代码获取模型的变量集合:

代码语言:txt
复制
# 导入TensorFlow的相关库
import tensorflow as tf

# 加载.pb文件
graph = tf.GraphDef()
with tf.gfile.FastGFile('./model.pb', 'rb') as f:
    graph.ParseFromString(f.read())

# 获取模型的变量集合
variables = []
for node in graph.node:
    if node.op == 'VariableV2':
        variables.append(node.name)

print(variables)

这样,就可以通过加载的.pb文件获取到模型的变量集合。如果变量集合为空,则表示该.pb文件中不包含模型的变量集合。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • UrlReferrer问题?

    官方解释:获取有关客户端上次请求 URL 信息,该请求链接到当前 URL。...1.也就是说,如果用Request.Redirect之后,再用Request.UrlReferrer是得不到前一个页面的链接,因为这不是客户端请求。...比如下面这样 A.aspx上用window.location='B.aspx' 但实践证明在B.aspx上用Request.UrlReferrer仍然,即js导航也不行!...即A.aspx 但很多情况下,我们需要在代码中处理完一些逻辑后让浏览器自动跳转,不可能每次都让用户多做一些无谓点击(显然有点"傻"),难道就没招了吗?...,不妨回复探讨一下 最后:本来以为这是一个很easy问题,但是在百度和园子里搜索了一下,貌似大家还没有本文提到"耍赖"办法,所以贴出来让大家探讨探讨

    2.4K90

    json和pb文件互换及文件压缩

    它可用于通讯协议、数据存储等领域语言无关、平台无关、可扩展序列化结构数据格式。在数据传输过程中,基于性能我们通常需要将json文件转为pb文件传输。本文就主要介绍json和pb文件相互转换流程。...import google.protobuf编写proto文件json和pb文件转换,首先需要有一个proto文件,主要定义需要处理数据结构,也就是定义你要消息和消息中各个字段及其数据类型。...我们需要对着要处理json文件格式来编写proto,纯手写proto文件是个费时和麻烦事情,有些工具可以提高我们写proto效率https://json-to-proto.github.io/简单举例如果...json文件相对复杂或者格式不规范,可能会引起后续转换时问题,可以根据提示调整生成proto文件,我主要遇到问题是array of dissimliar objects问题, 需要修改json文件格式...: [ 1, 2, 3, 4 ] }}我们再看看生成文件大小可以看出pb文件只占json文件20%。

    2.2K81

    java判断对象_Java判断对象是否(包括null ,””)方法

    大家好,又见面了,我是你们朋友全栈君。...本文实例大家分享了Java判断对象是否具体代码,供大家参考,具体内容如下 package com.gj5u.publics.util; import java.util.List; /** *...判断对象是否 * * @author Rex * */ public class EmptyUtil { /** * 判断对象 * * @param obj * 对象名 * @return...是否 */ @SuppressWarnings(“rawtypes”) public static boolean isEmpty(Object obj) { if (obj == null)...isEmpty(obj); } } 以上所述是小编给大家介绍Java判断对象是否(包括null ,””)方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家

    7K10

    vue 对象判断_Vue中可用判断对象是否方法

    Object.keys(xxx).length==0 验证结果如下:… 前言:在实现业务逻辑过程中,很多工程师都会遇到需要判断一个对象,数组是否情景,很多时候我们在请求数据时候都需要判断请求对象数据是否...,如果直接使用,在数据请求时,控制台就会报错.因此我们需要给一个判断,如果数据存在就直接调用,不存在就创建对象/数组.下面狗尾草给大家整理了几种判断对象是否方法,希望对大家有帮助. 1.我们在需要请求对象.../数组下标或属性来判断是否 var oData = Obj.item !...来避免对象错误.如果name,就以默认值(“!”后字符)显示.  ...MFC中 创建文件方法如下: CString strFolderPath = “./Output”; //判断路径是否存在 if(!

    6.1K20

    tensorflow实现将ckpt转pb文件方法

    本博客实现将自己训练保存ckpt模型转换为pb文件,该方法适用于任何ckpt模型,当然你需要确定ckpt模型输入/输出节点名称。...文件保存了TensorFlow计算图结构,可以理解神经网络网络结构,该文件可以被 tf.train.import_meta_graph 加载到当前默认图来使用。...ckpt.data : 保存模型中每个变量取值 但很多时候,我们需要将TensorFlow模型导出单个文件(同时包含模型结构定义与权重),方便在其他地方使用(如在Android中部署网络)。...一、CKPT 转换成 PB格式 将CKPT 转换成 PB格式文件过程可简述如下: 通过传入 CKPT 模型路径得到模型图和变量数据 通过 import_meta_graph 导入模型中图...pb模型代码 def freeze_graph_test(pb_path, image_path): ''' :param pb_path:pb文件路径 :param image_path:测试图片路径

    2.5K30

    Django ORM判断查询结果是否,判断django中orm实例

    QuerySet is empty" 总结: QuerySet.exists() QuerySet.count()==0 QuerySet 补充知识:关于在Sqlite3中如何判断数据表返回结果集是否问题解决...shell中可以看到该条查询语句在结果集时候确实返回了1行1列,不过那个行为空行。...在此种情况下,只能对返回结果集字符串指针(char **dbResult)判断是否来解决结果集是否问题,而不能以columnum和rownum是否0来判断。...//结果集不为。 ? 2、如果查询语句不只有聚合函数,”select * from tablename”,则可以对columnum和rownum判断是0,来判断结果集是否。...以上这篇Django ORM判断查询结果是否,判断django中orm实例就是小编分享给大家全部内容了,希望能给大家一个参考。

    6.9K10
    领券