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

Tensorflow: What are the "output_node_names" for freeze_graph.py in the model_with_buckets model?

我用 seq2seq = tf.nn.seq2seq.embedding_attention_seq2seq 训练了一个 tf.nn.seq2seq.model_with_bucketsTensorflow Tutorial 中的示例非常相似。

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

您可以通过将可选的 name="myname" 参数传递给几乎所有构建节点的 Tensorflow 运算符来为模型中的节点选择名称。如果你不指定它们,Tensorflow 会自动为图节点选择名称,但如果你想用 freeze_graph.py 之类的工具识别这些节点,那么最好自己选择名称。这些名称是您传递给 output_node_names.

的名称

您可以通过以下方式获取模型中的所有节点名称:

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])

您可能需要过滤这些以仅获取您的输出节点,或仅获取您想要的节点,但这至少可以帮助您获取您已经训练过且无力重新训练的图的名称name='some_name' 为每个节点定义。

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