Python tf.global_variable_initializer()与会话有关?
我对Tensorflow中的会话的理解似乎仍然有缺陷,即使在阅读了本手册和教程之后 特别是,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
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
数组。