在Tensorflow中,如何重命名某个操作名称?

YW *_*won 10 python tensorflow

我认为这个问题可能听起来很奇怪.比方说,有一个张量a.

x = tf.placeholder(tf.float32, [None, 2400], name="x")
y = tf.placeholder(tf.float32, [None, 2400], name="y")
a = tf.add(x, y, name="a")
Run Code Online (Sandbox Code Playgroud)

是否有一种有效的方式来引用a不同的名称,比如out?我在想像一个虚拟的操作

b = tf.add(a, 0, name="out")
Run Code Online (Sandbox Code Playgroud)

我问这个是因为我正在尝试不同的网络架构,而且无论架构如何,我都希望以一致的名称访问输出张量

tf.get_default_graph().get_tensor_by_name("out:0")`
Run Code Online (Sandbox Code Playgroud)

目前,输出张量取决于fc1/fc1wb:0或等的架构fc2/fc2wb:0.如何用特定名称包装最终操作?

Pri*_*ham 12

这个答案表明tf.Graph只是附加,你不能修改它.

话虽这么说,重新命名张量的一个更好的方法是使用这样的tf.identity:

tf.identity(a, name="out")
Run Code Online (Sandbox Code Playgroud)

编辑:在找到我自己的一个问题的答案后,我可以看到一个更好的方法来做到这一点:

graph_def.node[<index of the op you want to change>].name = "out"
Run Code Online (Sandbox Code Playgroud)

index通常是-1因为最终输出张量在最后graph_def

  • 更改 `graph_def.node[index].name` 不起作用。如果此节点被输入到任何其他节点,则此类引用是按名称进行的,因此您也需要更新它们。 (2认同)