Vin*_*nay 18 python initializer python-3.x tensorflow
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))
Run Code Online (Sandbox Code Playgroud)
我无法理解何时global_variables_initializer()需要.在上面的代码中,如果我们取消注释第4和第7行,我可以执行代码并查看值.如果我按原样运行,我会看到崩溃.
我的问题是它正在初始化哪些变量.x是一个不需要初始化的常量,是一个y未被初始化但用作算术运算的变量.
Sal*_*ali 17
tf.global_variables_initializer是初始化所有全局变量的快捷方式.它不是必需的,您可以使用其他方式初始化变量,或者在简单脚本的情况下,有时您根本不需要初始化它们.
除变量之外的所有内容都不需要初始化(常量和占位符).但是应该初始化每个使用过的变量(即使它是常量).这会给你一个错误,虽然z只是一个数字的0-d张量.
import tensorflow as tf
z = tf.Variable(4)
with tf.Session() as session:
print(session.run(z))
Run Code Online (Sandbox Code Playgroud)
我突出显示了使用的单词,因为如果你只有未运行的变量(或运行的非变量取决于它们),则不需要初始化它们.
例如,这段代码将毫无问题地执行,但它有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))
Run Code Online (Sandbox Code Playgroud)
从文档(重点是我的):
调用tf.Variable()可在图表中添加几个操作:
- 包含变量值的变量op。
- 初始化程序op,将变量设置为其初始值。这实际上是一个tf.assign操作。
- 初始值的操作数,例如示例中biass变量的零值操作数也被添加到图形中。
后来,
必须先显式运行变量初始化程序,然后才能运行模型中的其他操作。最简单的方法是添加一个运行所有变量初始值设定项的操作,并在使用模型之前运行该操作。
简而言之,global_variables_initializer永远不需要Variable初始化。只要有Variables代码,就必须首先对其进行初始化。global_variables_initializer帮助程序将初始化所有Variables先前声明的内容,因此这是一种非常方便的方法。