tf.initialize_all_variables()和tf.initialize_local_variables()的区别是什么?

7

我正在审查这个例子中的代码:fully_connected_reader.py

我对第147行和148行感到困惑:

init_op = tf.group(tf.initialize_all_variables(),
                   tf.initialize_local_variables())

我不知道哪些变量是所有变量,哪些是局部变量。有什么想法吗?

3个回答

11

tf.initialize_all_variables()tf.initialize_variables(tf.all_variables())的简写,tf.initialize_local_variables()tf.initialize_variables(tf.local_variables())的简写。分别初始化了在GraphKeys.VARIABLESGraphKeys.LOCAL_VARIABLE集合中的变量。

GraphKeys.LOCAL_VARIABLES集合中的变量是添加到图中但不保存或恢复的变量 (来源)。

tf.Variable()默认将新变量添加到GraphKeys.VARIABLE集合中,可以通过collections=参数进行控制。


谢谢你的答复。我该如何确定是否有任何需要初始化的本地变量? - C. Wang
应该能够将它们绘制成图形并打印出来,这个页面有你需要的参考资料 https://www.tensorflow.org/api_docs/python/tf/GraphKeys - David Parks

5

在TF中,本地变量是指使用collections=[tf.GraphKeys.LOCAL_VARIABLES]创建的任何变量。例如:

e = tf.Variable(6, name='var_e', collections=[tf.GraphKeys.LOCAL_VARIABLES])

LOCAL_VARIABLES: 是每台机器本地的Variable对象子集,通常用于临时变量,如计数器。注意:使用tf.contrib.framework.local_variable将其添加到此集合中。

它们通常不会被保存/恢复到检查点,并用于临时或中间值。有关更详细的答案,请查看这里

全局变量通常是由您初始化的其他任何变量。


在新版本的TF中,应使用tf.global_variables_initializer()tf.local_variables_initializer(),因为之前的函数已被弃用。


0
  • GLOBAL_VARIABLES

用于收集全局变量对象(在多台机器之间共享)。除了本地变量,这是所有变量的默认收集方式。

  • LOCAL_VARIABLES

用于收集本地变量对象,这些变量仅限于本地机器使用,不会被保存或恢复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接