如何找到特定张量流网络的output_node_names?

时间:2018-08-28 21:46:16

标签: tensorflow

我正在使用MobileNetv2,并使用deeplab作为预处理器(如果这是正确的术语?)。我已经完成了转移学习,以在自己的数据集上训练示例网络,并创建了.meta.index.pbtxt文件。当我尝试将它们转换为pb文件时,遇到了很多问题。

freeze_graph.py需要知道output_node_names。如果我使用的是InceptionV3而不是deeplab,则应为“ InceptionV3 / Predictions / Reshape_1”。在其他地方,我见过人们使用“ softmax”。

  1. 我尝试使用列出节点名称

    print([graph.as_graph_def()。node中节点的节点名称])

但是该列表太长了。搜索“预测”,“输出”,“重塑”,“ softmax”的变体并没有发现任何有希望的东西。

  1. 我看了张量图,但是图的复杂性让我不知所措。我找不到任何看起来像输出节点的东西。

  2. 有人建议淡褐色,但是当我尝试

    bazel构建tensorflow / tools / graph_transforms:summarize_graph

我明白了

ERROR: no such package 'tensorflow/tools/graph_transforms': BUILD file not found on package path`

编辑:如果相关,我将mobilenetv2_coco_voc_trainaug检查点用作从https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md转移学习的起点

1 个答案:

答案 0 :(得分:1)

鉴于生成图形的代码是on github,我只是从头开始构建它并检查其最终名称。

import tensorflow as tf
# you'll need `models/research/slim` on your PYTHONPATH FOR THE FOLLOWING
from nets.mobilenet import mobilenet_v2

image = tf.zeros((1, 224, 224, 3), dtype=tf.float32)  # values don't matter
out, endpoints = mobilenet_v2.mobilenet(image)
print(out.name)