TensorFlow笔记之变量管理

来源:互联网 发布:网络黄金王晨芳照片 编辑:程序博客网 时间:2024/06/07 11:11

TenssorFlow中通过变量名称获取变量,主要通过两个函数:tf.get_variabletf.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_variabletf.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_scopetf.get_variable后,就不再需要将所有的变量作为参数传递到不同的函数中,可以理解为全局变量了。当第一次需要创建的时候,令reuse= False;创建完之后,可以令reuse= True进行训练更新。当参数很多时候,可以大大提高效率。

0 0
原创粉丝点击