首先,跟进我的第一条评论,这是有道理的tf.get_collection https://www.tensorflow.org/api_docs/python/tf/get_collection给定的名称范围不起作用。从文档 https://www.tensorflow.org/api_docs/python/tf/get_collection,如果您提供范围,则仅返回具有指定名称的变量或操作。所以就这样了。
您可以尝试的一件事是列出您的每个节点的名称Graph https://www.tensorflow.org/api_docs/python/tf/Graph#as_graph_def with:
print([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])
另一种选择是使用张量板或 Jupyter Notebook 来显示图形show_graph https://gist.github.com/yaroslavvb/97504b8221a8529e7a51a50915206d68命令。可能有一个内置的show_graph
现在,但该链接指向一个已定义的 git 存储库。然后,您必须在图表中搜索您的操作,然后可能使用以下命令检索它:
my_op = tf.get_collection('full_operation_name')[0]
如果您想在将来将其设置为可以通过名称检索它,则需要使用将其添加到集合中tf.add_to_collection https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/graph_collections:
my_op = tf.some_operation(stuff, name='my_op')
tf.add_to_collection('my_op_name', my_op)
然后通过恢复图表来检索它,然后使用:
my_restored_op = tf.get_collection('my_op_name')[0]
您也可以通过仅命名它然后在中指定其范围来获得tf.get_collection
相反,但我不确定。可以找到更多信息和有用的教程here https://www.tensorflow.org/programmers_guide/meta_graph.