1 如何使用pb文件保存和恢复模型进行迁移学习(学习Tensorflow 实战google深度学习框架)
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:54
学习过程是Tensorflow 实战google深度学习框架一书的第六章的迁移学习环节。
问题的跟踪情况记录:
1 首先是保存模型:
因为inception v3接受输入的tensor是Decode/Content:0,是一个const类型,就是tf.constant类型,而一开始,我并不明白问题的所在,就将tf.placeholder改为了tf.constant,而实际上,两个都可以。问题的本身不是出在这里,而是对书本有错误的理解。
书上因为获取的是两个return elements,会自动从列表中取出元素。
而我获得的是一个retrun elelment,则只能返回一个列表。
2 使用并加载持久化模型,直接调用模型的训练参数进行计算。这些都是参照书上使用inception模型时的做法,我参照着自己写了一个模型,但是有重大bug
运行结果总是提示:

因为总是无法用feed_dict传入我想计算的输入。我一开始因为是tf.placeholder的原因,就参照inception的改为tf.constant。但是还是不行。后来在网上看到别人加载pb文件的一段代码https://blog.csdn.net/zhuiqiuk/article/details/53376283,重新对代码进行了修正。如下:

问题的根本在于:
V1= tf.import_graph_def(graph_def, return_elements=["v1:0"])获取的是
[<tf.Tensor 'import/v1:0' shape=(1,) dtype=float32>],是一个列表
而:input_x = sess.graph.get_tensor_by_name("v1:0")
获取的是一个Tensor,即Tensor("v1:0", shape=(1,), dtype=float32)。
使用sess.run的时候,feed_dict要修正的是tensor,而不是一个list。因此,总会提出unhashable type:listd的报错。
也可以正确运行
需要注意的是:
首先,无论如何,加载pb以后,输出所有可训练的变量,都不可能输出持久化模型中的变量。这一点以前就说过。以前说过,只能使用train.saver的方式。
其次,如果使用后一种方式,即sess.graph.get_tensor_by_name,则必须要有红黄标注的那一幕。即:_ = tf.import_graph_def(output_graph_def, name="")
程序附件链接:https://pan.baidu.com/s/11YtyDEyV84jONPi9tO2TCw 密码:8mfj
相关文章
-
1 时间戳 2 C# 如何生成一个时间戳 3 js 时间加一分钟... 4 js string
1 时间戳 2 C# 如何生成一个时间戳 3 js 时间加一分钟... 4 js string
- 互联网
- 2026年04月04日
-
1、mapreduce编程模型和mapreduce模型实现程序之间的关系
1、mapreduce编程模型和mapreduce模型实现程序之间的关系
- 互联网
- 2026年04月04日
-
1、线性DP 213. 打家劫舍 II
1、线性DP 213. 打家劫舍 II
- 互联网
- 2026年04月04日
-
01.使用File类读写文件
01.使用File类读写文件
- 互联网
- 2026年04月04日
-
0xGame 2023【WEEK4】Crypto WP
0xGame 2023【WEEK4】Crypto WP
- 互联网
- 2026年04月04日
-
0x54 动态规划
0x54 动态规划
- 互联网
- 2026年04月04日






