如何找到output_node_name来构建冻结图?

时间:2018-08-21 07:49:33

标签: python-3.x tensorflow machine-learning deep-learning

我指的是https://github.com/dennybritz/cnn-text-classification-tf作为参考。我的目标是从模型文件构建冻结图。我想知道签名中的输入和输出节点,以有效地构建冻结图。我正在使用以下代码从图形定义中打印原始文件。

saver=tf.train.import_meta_graph('some_path/model.ckpt.meta')
imported_graph = tf.get_default_graph() 
graph_op = imported_graph.get_operations() with open('output.txt', 'w') as f:
        for i in graph_op:
            f.write(str(i))

我得到的输出如下:https://drive.google.com/drive/folders/1iZQqohx8jAWbSw7XV3vFJuLkaUp0Dt2s?usp=sharing

我怎么知道哪个输出节点和哪个输入节点在此文件中存在输入输出的杂音?

1 个答案:

答案 0 :(得分:1)

我建议使用Tensorboard可视化图形结构,而不要使用带有节点的文本文件。您可以找到更多详细信息here

但是图本身没有输入或输出的概念。您可以将没有输入连接的节点视为输入节点(尤其是占位符节点)的良好候选者。连接到损失功能的节点很适合作为输出节点。

总结:通常,您需要通过分析网络体系结构来猜测哪些节点是输入,哪些是输出。

对于您引用的存储库,您可以阅读eval.py代码并找到以下几行:

input_x = graph.get_operation_by_name("input_x").outputs[0]
# input_y = graph.get_operation_by_name("input_y").outputs[0]
dropout_keep_prob = graph.get_operation_by_name("dropout_keep_prob").outputs[0]

# Tensors we want to evaluate
predictions = graph.get_operation_by_name("output/predictions").outputs[0]

因此输入节点可能是“ input_x”,输出节点可能是“输出/预测”。