如何找到冻结模型的输入和输出节点

Posted

技术标签:

【中文标题】如何找到冻结模型的输入和输出节点【英文标题】:How to find the Input and Output Nodes of a Frozen Model 【发布时间】:2018-06-20 22:53:49 【问题描述】:

我想在模型动物园的冻结模型上使用 tensorflow 的 optimize_for_inference.py 脚本:ssd_mobilenet_v1_coco

如何查找/确定模型的输入和输出名称?

Here is a link to the graph generated by tensorboard

这个问题可能会有所帮助:Given a tensor flow model graph, how to find the input node and output node names(对我来说没有)

【问题讨论】:

【参考方案1】:

我认为您可以使用以下代码。我从here 下载了ssd_mobilenet_v1_coco 冻结模型,并能够获得如下所示的输入和输出名称

!pip install tensorflow==1.15.5

import tensorflow as tf
tf.__version__ # TF1.15.5

gf = tf.GraphDef()  
m_file = open('/content/frozen_inference_graph.pb','rb')
gf.ParseFromString(m_file.read())
 
with open('somefile.txt', 'a') as the_file:
   for n in gf.node:
       the_file.write(n.name+'\n')
 
file = open('somefile.txt','r')
data = file.readlines()
print("output name = ")
print(data[len(data)-1])
 
print("Input name = ")
file.seek ( 0 )
print(file.readline())

输出是

output name = 
detection_classes

Input name = 
image_tensor

请查看gist here。

【讨论】:

以上是关于如何找到冻结模型的输入和输出节点的主要内容,如果未能解决你的问题,请参考以下文章

是否可以按宽度扩展冻结神经网络模型的节点?

TensorFlow:冻结模型似乎只存储输出节点?

如何找到张量流模型(.pb 格式的冻结图)、onnx 模型(.onnx 格式)的浮点精度,比如它是 FP32 还是 FP16?

Tensorflow 模型:如何从 proto buff 文件中识别输入/输出节点名称?

在张量流中将 SSD 转换为冻结图。必须使用哪些输出节点名称?

keras:将一个模型的输出作为另一个模型的部分输入。