Dan*_*aid 20 python tensorflow
我是tensorflow的新手,我无法理解变量和常量的差异,我认为我们使用变量求方程和常量来表示直接值,但为什么代码#1只能工作,为什么不能编码#2和# 3,请解释在哪些情况下我们必须首先运行我们的图表(a)然后我们的变量(b)即
(a) session.run(model)
(b) print(session.run(y))
Run Code Online (Sandbox Code Playgroud)
在这种情况下我可以直接执行这个命令,即
print(session.run(y))
Run Code Online (Sandbox Code Playgroud)
代码#1:
x = tf.constant(35, name='x')
y = tf.Variable(x + 5, name='y')
model = tf.global_variables_initializer()
with tf.Session() as session:
session.run(model)
print(session.run(y))
Run Code Online (Sandbox Code Playgroud)
代码#2:
x = tf.Variable(35, name='x')
y = tf.Variable(x + 5, name='y')
model = tf.global_variables_initializer()
with tf.Session() as session:
session.run(model)
print(session.run(y))
Run Code Online (Sandbox Code Playgroud)
代码#3:
x = tf.constant(35, name='x')
y = tf.constant(x + 5, name='y')
model = tf.global_variables_initializer()
with tf.Session() as session:
session.run(model)
print(session.run(y))
Run Code Online (Sandbox Code Playgroud)
gar*_*des 29
在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))
Run Code Online (Sandbox Code Playgroud)
第三个代码(#3)无法正常工作,因为您尝试使用操作初始化常量,这是不可能的.要解决它,一个合适的策略是(#1).
关于你的上一个问题.(a) session.run(model)当计算图中有变量时,您需要运行(b) print(session.run(y)).
| 归档时间: |
|
| 查看次数: |
12598 次 |
| 最近记录: |