我培训tf.nn.seq2seq.model_with_buckets
与seq2seq = tf.nn.seq2seq.embedding_attention_seq2seq
非常相似Tensorflow Tutorial中的示例。
现在我想使用freeze_graph.py
冻结图表。如何在模型中找到“output_node_names”?
答案 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'
参数。