Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当实际需要全局变量时_Python_Python 3.x_Tensorflow_Initializer - Fatal编程技术网

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...