TensorFlow Slim版InceptionV3输入输出节点查询及图冻结问题
解决TF Slim InceptionV3输入输出节点查找及冻结图问题
嘿,我来帮你搞定这个问题!针对你用TF Slim训练InceptionV3后找不到输入输出节点的困扰,我整理了直接的答案和简单的查找方法,完全不用复杂的TensorBoard操作:
一、Slim官方InceptionV3的默认输入输出节点
先给你最直接的默认值(如果你训练时没自定义节点名称的话,这些就是你要的):
- 输入节点:默认名称是
Placeholder(对应的张量名是Placeholder:0),这是模型接收输入图像的占位符节点。 - 输出节点:如果是分类任务,最终的softmax概率输出节点是
InceptionV3/Predictions/Reshape_1(张量名InceptionV3/Predictions/Reshape_1:0);要是你需要未经过softmax的logits层输出,节点名称是InceptionV3/Logits/Conv2d_1c_1x1/BiasAdd。
二、不用TensorBoard的节点查找方法(Windows 7适用)
如果你不确定默认节点是否符合你的训练设置,或者想自己确认,这两个简单方法很适合:
方法1:用Python脚本快速打印所有节点
写一段几行的脚本,加载你的模型就能输出所有节点名称,轻松定位目标:
import tensorflow as tf # 重置默认图 tf.reset_default_graph() # 加载模型的meta文件 saver = tf.train.import_meta_graph('./model.meta') with tf.Session() as sess: # 恢复权重 saver.restore(sess, './model.ckpt') # 遍历并打印所有节点名称 print("所有节点名称:") for node in tf.get_default_graph().as_graph_def().node: print(node.name)
运行后,你可以在输出里搜索input、predict、logit这类关键词,快速找到输入输出节点。
方法2:直接查看graph.pbtxt文件
你已经有graph.pbtxt这个文本格式的图定义文件了,直接用记事本或者VS Code打开它:
- 找输入节点:搜索
Placeholder,输入节点一般是类型为Placeholder的节点,看它的name属性即可。 - 找输出节点:搜索
Predictions或者Logits,分类任务的输出基本都在这些节点分支下,比如InceptionV3/Predictions/Reshape_1就是最终的预测输出。
三、冻结图的快速命令
找到节点后,用TF自带的freeze_graph.py工具生成.pb文件,Windows下在cmd里运行(注意替换成你的实际文件路径和节点名):
python tensorflow/python/tools/freeze_graph.py ^ --input_graph=graph.pbtxt ^ --input_checkpoint=model.ckpt ^ --output_graph=frozen_model.pb ^ --output_node_names="InceptionV3/Predictions/Reshape_1" ^ --input_binary=false
如果有多个输出节点,用逗号分隔节点名称就行。
内容的提问来源于stack exchange,提问作者Chansu Lee
相关产品推荐
相关产品推荐

