Tensorflow:如何创建局部变量?

时间:2018-01-09 18:59:16

标签: tensorflow

我试图理解局部和全局变量在张量流中是如何不同的,以及初始化变量的正确方法。

根据文件tf.local_variables_initializer

  

返回初始化所有局部变量的Op。

     

这只是variables_initializer(local_variables())

的快捷方式

所以关键部分是tf.local_variablesThe doc

  

局部变量 - 每个过程变量,通常不保存/恢复到检查点并用于临时值或中间值。例如,它们可以用作度量计算的计数器或本机读取数据的时期数。

这听起来合乎逻辑,但无论我如何尝试,我都无法将任何变量置于本地。

features = 2
hidden = 3

with tf.variable_scope('start'):
  x = tf.placeholder(tf.float32, shape=[None, features], name='x')
  y = tf.placeholder(tf.float32, shape=[None], name='y')

with tf.variable_scope('linear'):
  W = tf.get_variable(name='W', shape=[features, hidden])
  b = tf.get_variable(name='b', shape=[hidden], initializer=tf.zeros_initializer)
  z = tf.matmul(x, W) + b

with tf.variable_scope('optimizer'):
  predict = tf.reduce_sum(z, axis=1)
  loss = tf.reduce_mean(tf.square(y - predict))
  optimizer = tf.train.AdamOptimizer(0.1).minimize(loss)

print(tf.local_variables())

输出始终为空列表。 如何 我应该创建局部变量?

2 个答案:

答案 0 :(得分:1)

局部变量只是一个常规变量,它被添加到"特殊变量"集合。

该集合为tf.GraphKeys.LOCAL_VARIABLES

您可以选择任何变量定义,只需添加参数collections=[tf.GraphKeys.LOCAL_VARIABLES]即可将变量添加到指定的集合列表中。

答案 1 :(得分:1)

想想我找到了。在collections=[tf.GraphKeys.LOCAL_VARIABLES] tf.get_variable W {} {} {{}}} {所以这种方式W = tf.get_variable(name='W', shape=[features, hidden], collections=[tf.GraphKeys.LOCAL_VARIABLES]) 变成局部变量:

q = tf.contrib.framework.local_variable(0.0, name='q')

文档提到了另一种可行的可能性:

(?=.*\|)