看一下代码片段:
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)
Run Code Online (Sandbox Code Playgroud)
输出是
y/a:0
y_1/b:0
Run Code Online (Sandbox Code Playgroud)
为什么变量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)
Run Code Online (Sandbox Code Playgroud)
产量:
y/a:0
y/b:0
Run Code Online (Sandbox Code Playgroud)
这同样适用于tf.variable_scope().
你的问题的底线很可能是Tensorflow无法知道你是否明确地想要在范围内附加某些内容,或者是否有人创建了不同的范围并希望保护您免受无意的重复使用.通过在末尾附加'/',您可以将名称转换为绝对标识符.
| 归档时间: |
|
| 查看次数: |
1968 次 |
| 最近记录: |