As 穆罕默德·伊兹 https://stackoverflow.com/a/43436440/3086290写道 Tensorflow 图中没有层。只有可以放置在同名范围下的操作。
通常,单个层的操作位于同一范围内,并且了解名称范围概念的应用程序可以将它们分组显示。
此类应用之一是张量板 https://www.tensorflow.org/get_started/summaries_and_tensorboard。我相信使用 Tensorboard 是查找节点名称的最简单方法。
考虑以下示例:
import tensorflow as tf
import tensorflow.contrib.slim.nets as nets
input_placeholder = tf.placeholder(tf.float32, shape=(None, 224, 224, 3))
network = nets.inception.inception_v3(input_placeholder)
writer = tf.summary.FileWriter('.', tf.get_default_graph())
writer.close()
它为输入数据创建占位符,然后创建 Inception v3 网络并将事件数据(带有图形)保存在当前目录中。
在同一目录中启动 Tensorflow 可以查看图形结构。
tensorboard --logdir .
Tensorboard 将 UI url 打印到控制台
Starting TensorBoard 41 on port 6006
(You can navigate to http://192.168.128.73:6006)
Below is an image of this graph.
找到您感兴趣的节点并选择它以查找其名称(在左上方的信息窗格中)。
Input:
Output:
请注意,通常您不需要节点名称,而是张量名称。大多数情况下添加就足够了:0
到节点名称来获取张量名称。
例如,要使用图中的名称运行上面创建的 Inception v3 网络,请使用以下代码(上述代码的延续):
import numpy as np
data = np.random.randn(1, 224, 224, 3) # just random data
session = tf.InteractiveSession()
session.run(tf.global_variables_initializer())
result = session.run('InceptionV3/Predictions/Softmax:0', feed_dict={'Placeholder:0': data})
# result.shape = (1, 1000)