Tensorflow:model_with_buckets模型中freeze_graph.py的“output_node_names”是什么?

时间:2016-08-15 16:05:29

标签: tensorflow recurrent-neural-network

我培训tf.nn.seq2seq.model_with_bucketsseq2seq = tf.nn.seq2seq.embedding_attention_seq2seq非常相似Tensorflow Tutorial中的示例。

现在我想使用freeze_graph.py冻结图表。如何在模型中找到“output_node_names”?

2 个答案:

答案 0 :(得分:6)

您可以通过将可选的name="myname"参数传递给构建节点的任何Tensorflow运算符来为模型中的节点选择名称。如果您没有指定图形节点,Tensorflow会自动选择图形节点的名称,但如果您想将这些节点识别为像freeze_graph.py这样的工具,那么最好自己选择名称。这些名称是您传递给output_node_names的名称。

答案 1 :(得分:3)

您可以使用以下内容获取模型中的所有节点名称:

node_names = [node.name for node in tf.get_default_graph().as_graph_def().node]

或者恢复图表:

saver = tf.train.import_meta_graph(/path/to/meta/graph)
sess = tf.Session()
saver.restore(sess, /path/to/checkpoints)
graph = sess.graph
print([node.name for node in graph.as_graph_def().node])

您可能需要对这些节点进行过滤以仅获取您的输出节点,或仅获取您想要的节点,但这至少可以帮助您获取已经训练过的图表的名称,并且无法重新使用{{ 1}}为每个节点定义。

理想情况下,您希望为稍后要访问的每个操作或张量定义name='some_name'参数。