Python 当实际需要全局变量时
我无法理解何时实际需要Python 当实际需要全局变量时,python,python-3.x,tensorflow,initializer,Python,Python 3.x,Tensorflow,Initializer,我无法理解何时实际需要global\u variables\u initializer()。在上面的代码中,如果我们取消注释第4行和第7行,我可以执行代码并查看值。如果我按原样跑,我会看到撞车 我的问题是它正在初始化哪些变量x是一个不需要初始化的常数,y是一个未初始化但用作算术运算的变量。来自(强调部分): 调用tf.Variable()会在图形中添加几个操作: 保存变量值的变量op 将变量设置为初始值的初始值设定项op。这实际上是一个tf.assign op 初始值的op,例如示例中偏差变量
global\u variables\u initializer()
。在上面的代码中,如果我们取消注释第4行和第7行,我可以执行代码并查看值。如果我按原样跑,我会看到撞车
我的问题是它正在初始化哪些变量x
是一个不需要初始化的常数,y
是一个未初始化但用作算术运算的变量。来自(强调部分):
调用tf.Variable()会在图形中添加几个操作:
- 保存变量值的变量op
- 将变量设置为初始值的初始值设定项op。这实际上是一个tf.assign op
- 初始值的op,例如示例中偏差变量的零op也添加到图形中
global\u variables\u initializer
是不需要的,Variable
初始化是不需要的。只要代码中有变量
,就必须首先初始化它们。global\u variables\u initializer
helper初始化所有先前声明的变量,因此这是一种非常方便的方式。是初始化所有全局变量的快捷方式。它不是必需的,您可以使用其他方法初始化变量,或者在使用简单脚本的情况下,有时根本不需要初始化它们
除变量外的所有内容都不需要初始化(常量和占位符)。但是使用的每个变量(即使是常量)都应该初始化。这将给您一个错误,尽管z
只是一个只有一个数字的0-d张量
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))
我突出显示了使用的单词,因为如果您只是有未运行的变量(或不运行的变量取决于它们),则不需要初始化它们
例如,此代码执行时不会出现任何问题,但它有两个变量和一个依赖于它们的操作。但这项运动并不需要它们
import tensorflow as tf
z = tf.Variable(4)
with tf.Session() as session:
print(session.run(z))
除非您在tensorflow会话运行中使用声明的tf.Variable
或tf.placeholder
,否则这永远不是必需的。就我个人而言,我总是习惯于运行tf.global\u variables\u initializer()
。运行tensorflow模型时,它几乎成为锅炉板代码的一部分:
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))
tf.global\u variables\u初始化器
只初始化tf.global\u variables()
将列出的所有变量。在分布式环境中,图形可能位于集群中的不同计算节点中,这实际上很有意义
在这种情况下,tf.global\u variables\u initializer()
,它只是tf.variables\u initializer(tf.global\u variables())的别名。
将初始化图形所在的所有计算节点中的所有变量。在我的代码中,没有类似于“z=tf.Variable(4)”的“显式初始化”对于一个变量。但我使用了变量y,它是算术运算的输出,它通过sess.run()进行计算。在这种情况下,它需要“隐式初始化”,因此我们需要变量初始化?@Vinay“无显式初始化”是什么意思?如果不是初始化,这是什么tf.Variable(x+5,name='y')
谢谢,你说得对。我认为那句话是算术运算,而不是初始化。
with tf.Session(graph=graph) as sess:
sess.run(tf.global_variables_initializer())
# run model etc...