内容整理自:Tensorflow_实战Google深度学习框架(第二版)
- 通过
tf.variable_scope
生成一个上下文管理器。
with tf.variable_scope("wy"):
w = tf.get_variable("v",[1],initializer =tf.constant_initializer(1.0))
#以上wy空间中已有w变量,以下代码再定义w变量会出错
with tf.variable_scope("wy"):
w = tf.get_variable("w",[1])
-
在生成上下文管理器时,若设置
reuse=True
,tf.variable_scope将只能获取已经创建过的变量,如果空间中没有变量将会报错。 -
如果
reuse=False
或reuse=None
,tf.get_variable
将创建新的变量。- 同名变量已存在,会报错。
-
tf.variable_scope
可以嵌套。- 在一个上下文管理器中新建一个嵌套的上下文管理器,若没有定义reuse,则与外面一层保持一致。
-
可以通过
tf.get_variable_scope().reuse
获得当前上下文管理器中的reuse参数取值。 -
在命名空间内创建的变量会带上这个命名空间名作为前缀,以下代码为例。
v1=tf.get_variable("v",[1])
print v1.name
# 输出 v:0
# "v"表示变量名称,":0"表示这个变量是生成变量这个运算的第一个结果
with tf.variable_scope("wy"):
v2 = tf.get_variable("v",[1])
print v2.name #输出 wy/v:0