gpt4 book ai didi

python - TensorFlow 变量和常量

转载 作者:IT老高 更新时间:2023-10-28 20:53:15 26 4
gpt4 key购买 nike

我是 tensorflow 的新手,我无法理解变量和常量的区别,我知道我们将变量用于方程,将常量用于直接值,但为什么代码 #1 只能工作,为什么不能代码# 2和#3,请解释在哪些情况下我们必须先运行图表(a)然后运行变量(b),即

 (a) session.run(model)
(b) print(session.run(y))

在这种情况下我可以直接执行这个命令即

print(session.run(y))

代码 #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))

代码 #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))

代码 #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))

最佳答案

在 TensorFlow 中,常量和变量之间的区别在于,当你声明一些 constant ,它的值以后不能改变(初始化也要带值,不带操作)。

然而,当您声明 Variable ,您可以在将来使用 tf.assign() 更改其值方法(并且可以通过值或操作来实现初始化)。

函数tf.global_variables_initializer()使用作为参数传递的值初始化代码中的所有变量,但它在异步模式下工作,因此当变量之间存在依赖关系时无法正常工作。

您的第一个代码 (#1) 可以正常工作,因为不依赖于变量初始化并且常量是用值构造的。

由于 tf.global_variables_initializer() 的异步行为,第二个代码 (#2) 不起作用.您可以使用 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)) .

关于python - TensorFlow 变量和常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44745855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com