看代码片段:
import tensorflow as tf
with tf.name_scope('y'):
a1 = tf.Variable(1,name='a')
with tf.name_scope('y'):
a2 = tf.Variable(1,name='b')
print(a1.name)
print(a2.name)
输出为
y/a:0
y_1/b:0
为什么变量a2的name_scope是y_1?
最佳答案
关于github关于这个话题有一个有趣的讨论。
您可以在末尾附加一个“/”,使其成为绝对标识符:
import tensorflow as tf
with tf.name_scope('y'):
a1 = tf.Variable(1,name='a')
with tf.name_scope('y/'):
a2 = tf.Variable(1,name='b')
print(a1.name)
print(a2.name)
其产量:
y/a:0
y/b:0
这同样适用于 tf.variable_scope() .
您的问题的底线可能是 Tensorflow 无法知道您是否明确想要向范围附加某些内容,或者是否有人在其他地方创建了不同的范围并希望保护您免受无意的重用。通过在末尾附加“/”,您可以将名称转变为绝对标识符。
关于tensorflow - 为什么同名的 tf.name_scope 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670224/