如何在Tensorflow的全局命名空间中存储和检索张量?

如何在Tensorflow的全局命名空间中存储和检索张量?,tensorflow,Tensorflow,我正在读一个大的Tensorflow项目。对于计算图的节点分散在项目周围的项目,我想知道是否有方法存储计算图的张量节点并将该节点添加到sess.run中的fetch列表中 例如,如果我想在的第615行添加probs 对于全局名称空间,是否有类似tf.add_node(probs,“probs”)的方法,稍后我可以获得tf.get_node(“probs”),只是为了方便地在项目中传递节点 一个更普遍的问题是,构造tensorflow代码和提高使用不同模型进行实验的效率的更好方法是什么 当然可以。

我正在读一个大的Tensorflow项目。对于计算图的节点分散在项目周围的项目,我想知道是否有方法存储计算图的张量节点并将该节点添加到sess.run中的fetch列表中

例如,如果我想在的第615行添加probs 对于全局名称空间,是否有类似tf.add_node(probs,“probs”)的方法,稍后我可以获得tf.get_node(“probs”),只是为了方便地在项目中传递节点


一个更普遍的问题是,构造tensorflow代码和提高使用不同模型进行实验的效率的更好方法是什么

当然可以。要在以后检索它,您必须给它一个名称,以便可以按名称检索它。以代码中的
probs
为例。它是使用
tf.nn.softmax()
函数创建的,其API如下所示

tf.nn.softmax(
    logits,
    axis=None,
    name=None,
    dim=None
)
请参见参数
名称
?您可以将此参数添加到第615行,如下所示:

 probs = tf.nn.softmax(all_logits, name='my_tensor')
稍后当您需要它时,您可以调用
tf.Graph.get\u tensor\u by\u name(name)
来检索这个张量

graph = tf.get_default_graph()
retrieved_probs = graph.get_tensor_by_name('my_tensor:0')
“my_tensor”
是softmax操作的名称,应将“:0”添加到该操作的末尾,这意味着您正在检索该张量,而不是该操作。调用
Graph.get\u operation\u by\u name()
时,不应添加“:0”


您必须确保张量存在(它可能是在此行之前执行的代码中创建的,也可能是从元图文件中恢复的)。如果它是在变量作用域中创建的,则还必须在
name
param前面添加作用域名称和“/”。例如,
'my\u scope/my\u tensor:0'

谢谢您的回答。我发现我应该使用图形。在这种情况下,通过名称(“我的张量”)获取操作。你是对的,但我发现我需要进行图形。通过名称(“我的张量:0”)获取张量。哦,是的,我的错误。