在TensorFlow中,常量和变量之间的区别在于,当您声明某个常量时,其值以后将无法更改(而且初始化应使用值
而不是操作 )。
但是,在声明变量时,将来可以使用tf.assign()方法更改其值(并且可以通过值或操作来实现初始化)。
函数tf.global_variables_initializer()使用作为参数传递的值初始化代码中的所有变量,但它在异步模式下工作,因此当变量之间存在依赖关系时,该函数将无法正常工作。
您的第一个代码(#1)正常工作,因为不依赖于变量初始化,并且常量是用值构造的。
由于的异步行为,第二个代码(#2)不起作用
tf.global_variables_initializer()。您可以使用tf.variables_initializer()对其进行修复,如下所示:
x = tf.Variable(35, name='x')model_x = tf.variables_initializer([x])y = tf.Variable(x + 5, name='y')model_y = tf.variables_initializer([y])with tf.Session() as session: session.run(model_x) session.run(model_y) print(session.run(y))
第三个代码(#3)无法正常工作,因为您试图通过操作初始化常量,这是不可能的。要解决此问题,适当的策略是(#1)。
关于您的最后一个问题。
(a) session.run(model)当计算图中有变量时,您需要运行
(b) print(session.run(y))。



