【Tensorflow】变量管理:tf.get_variable与tf.variable_scope

内容整理自: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=Falsereuse=Nonetf.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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章