您的位置:首页 > 其它

TensorFlow笔记之变量管理

2017-05-01 22:19 260 查看
TenssorFlow中通过变量名称获取变量,主要通过两个函数:
tf.get_variable
tf.variable_scope


tf.get_variable


TensorFlow在创建变量时,它和
tf.Variable
的功能基本等价的。

例如:

v = tf.get_variable("v", shape = [1], initializer = tf.constant_initializer(1.0))

v = tf.Variable(tf.constant(1.0, shape = [1], name = "v")


  
tf.get_variable
tf.Variable
最大的区别,在于指定变量名称的参数。对于前者,变量名称是一个必填的参数,它根据这个名字去创建或获取变量;对于后者,变量名称是一个选填的参数,用
name = "v"
的形式给出。

tf.variable_scope


如果想用
tf.get_variable
来获取一个已经创建的变量,需要通过tf.variable_scope函数来生成一个上下文管理器,并且明确指定在这个上下文管理器中,
tf.get_variable
将直接获取已经生成的变量,例如:

#在生成上下文管理器时,将参数reuse设置为True。这样tf.get_variable函数将直接获取已经声明的变量。如果不设置reuse,将报错。
with tf.variable_scope("foo", reuse = True):
v1 = tf.get_variable("v", [1])


另外
tf.variable_scope
可以使用嵌套,另外,在命名空间内创建的变量名称将会带上这个命名空间名作为前缀。例如:

with tf.variable_scope("foo"):
v2 = tf.get_variable("v", [1])
print(v2.name)       #输出foo/v:0


总结:

  在使用
tf.variable_scope
tf.get_variable
后,就不再需要将所有的变量作为参数传递到不同的函数中,可以理解为全局变量了。当第一次需要创建的时候,令
reuse= False
;创建完之后,可以令
reuse= True
进行训练更新。当参数很多时候,可以大大提高效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TensorFlow 变量管理