Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 tf.global_variable_initializer()与会话有关?_Python_Tensorflow - Fatal编程技术网

Python tf.global_variable_initializer()与会话有关?

Python tf.global_variable_initializer()与会话有关?,python,tensorflow,Python,Tensorflow,我对Tensorflow中的会话的理解似乎仍然有缺陷,即使在阅读了本手册和教程之后 特别是,tf.global\u variable\u initializer()是针对特定会话还是针对程序中的所有会话初始化全局变量?是否有方法在会话中/会话期间“取消初始化”变量 tf.变量能否在多个会话中使用?答案似乎是肯定的(例如,下面的代码),但是我们是否希望在一个程序中有多个会话,而不是一个会话 #!/usr/bin/env python import tensorflow as tf def mai

我对Tensorflow中的会话的理解似乎仍然有缺陷,即使在阅读了本手册和教程之后

特别是,
tf.global\u variable\u initializer()
是针对特定会话还是针对程序中的所有会话初始化全局变量?是否有方法在会话中/会话期间“取消初始化”变量

tf.变量能否在多个会话中使用?答案似乎是肯定的(例如,下面的代码),但是我们是否希望在一个程序中有多个会话,而不是一个会话

#!/usr/bin/env python
import tensorflow as tf

def main():
    x = tf.constant(0.)
    with tf.Session() as sess:
        print(sess.run(x))
    with tf.Session() as sess:
        print(sess.run(x))

if __name__ == '__main__':
    main()

尤其是
tf.global\u variable\u initializer()
是否针对特定会话或程序中的所有会话初始化全局变量?

tf.reset_default_graph()
x = tf.Variable(tf.random.normal([1,5]))
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    first_init_out = sess.run(x)
    sess.run(tf.global_variables_initializer())
    second_init_out = sess.run(x)

np.testing.assert_array_equal(first_init_out, second_init_out)
关于特定的会议。看看这个

tf.reset_default_graph()
x = tf.Variable(tf.random.normal([1,5]))
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    first_sess_out = sess.run(x)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    second_sess_out = sess.run(x)

np.testing.assert_array_equal(first_sess_out, second_sess_out)
断言失败,因此它是每个会话


是否有方法在会话中/会话期间“取消初始化”变量?

tf.reset_default_graph()
x = tf.Variable(tf.random.normal([1,5]))
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    first_init_out = sess.run(x)
    sess.run(tf.global_variables_initializer())
    second_init_out = sess.run(x)

np.testing.assert_array_equal(first_init_out, second_init_out)
显然,在运行
tf.global\u variables\u initializer()之后,变量被重新初始化。因此,断言失败


是否可以在多个会话中使用
tf.Variable
?答案似乎是肯定的(例如,下面的代码),但我们是否希望在一个程序中有多个会话,而不是一个会话?

tf.reset_default_graph()
x = tf.Variable(tf.random.normal([1,5]))
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    first_init_out = sess.run(x)
    sess.run(tf.global_variables_initializer())
    second_init_out = sess.run(x)

np.testing.assert_array_equal(first_init_out, second_init_out)

是的,正如您在上面的示例中所看到的,可以使用它。好的情况是您希望在一次运行中多次执行图形。

感谢提供详细的示例。由于缺乏理解,我无法自己构建它们。但奇怪的是:在第一个示例中,为什么
sess.run(x)
tensorflow
会话中返回
numpy
数组???对这种奇怪行为的任何引用?当使用
sess.run(x)
执行操作
x
时,相应的输出不再是
tf.Tensor
,而是
numpy
数组。