当实际需要 global_variables_initializer() 时

新手上路,请多包涵
import tensorflow as tf
x = tf.constant(35, name='x')
y = tf.Variable(x + 5, name='y')
# model = tf.global_variables_initializer()
with tf.Session() as session:
        print("x = ", session.run(x))
        # session.run(model)
        print("y = ", session.run(y))

我无法理解何时需要 global_variables_initializer() 。在上面的代码中,如果我们取消注释第 4 行和第 7 行,我可以执行代码并查看值。如果我按原样运行,我会看到崩溃。

我的问题是它正在初始化哪些变量。 x 是一个不需要初始化的常量, y 是一个不被初始化但用作算术运算的变量。

原文由 Vinay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 617
2 个回答

tf.global_variables_initializer 是初始化所有全局变量的快捷方式。这不是必需的,您可以使用其他方法来初始化变量,或者在简单脚本的情况下,有时您根本不需要初始化它们。

除了变量之外的所有东西都不需要初始化(常量和占位符)。但是每个 使用 的变量(即使它是一个常量)都应该被初始化。这会给你一个错误,尽管 z 只是只有一个数字的 0-d 张量。

 import tensorflow as tf
z = tf.Variable(4)
with tf.Session() as session:
        print(session.run(z))

我突出显示了使用的词,因为如果你只有不运行的变量(或者没有运行依赖于它们)你不需要初始化它们。


例如,这段代码将毫无问题地执行,尽管如此它有 2 个变量和一个依赖于它们的操作。但是运行不需要它们。

 import tensorflow as tf
x = tf.constant(35, name='x')
y = tf.Variable(x + 5, name='y')
z = tf.Variable(4)
a = y + z
with tf.Session() as session:
        print("x = ", session.run(x))

原文由 Salvador Dali 发布,翻译遵循 CC BY-SA 3.0 许可协议

文档(强调我的):

调用 tf.Variable() 会向图中添加几个操作:

  • 保存变量值的变量 op。
  • 将变量设置为其初始值 的初始化操作。这实际上是一个 tf.assign 操作。
  • 初始值的操作,例如示例中偏差变量的零操作也被添加到图中。

之后,

变量初始值设定项必须在模型中的其他操作运行之前显式 运行。最简单的方法是添加一个运行所有变量初始值设定项的操作,并在使用模型之前运行该操作。

简而言之,永远不需要 global_variables_initializer Variable ,初始化是—。每当你的代码中有 Variables 时,你必须先初始化它们。 global_variables_initializer 助手初始化所有 Variables 之前声明的,因此这是一种非常方便的方法。

原文由 P-Gn 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题