gpt4 book ai didi

python - 如果我们可以直接使用变量而无需初始化,为什么我们在tensorflow中使用tf.Variable?

转载 作者:行者123 更新时间:2023-11-30 09:48:04 25 4
gpt4 key购买 nike

在 tensorflow 中,我们以两种方式使用变量:

a = tf.constant(12)

b = tf.constant(10)

#NOW SAY I WANT TO ADD THESE TWO

#1st method

ans = tf.Variable(tf.add(a, b))

# Initialize the variable
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
print(sess.run(ans))

#2nd method

ans1 = tf.add(a, b)
sess = tf.Session()
sess.run(ans1)

众所周知,使用第一种方法我们必须初始化变量,否则会抛出“未初始化变量”的错误。但他们不需要为第二种方法进行初始化。所以我的问题是为什么我们在 tensorflow 中使用第一种方法或 tf.Variable ?他们对此有何具体用途吗?

最佳答案

你应该想到tensorflow中的4种类型的张量:

  • 占位符 - 这些张量期望找到通过 feed_dict 传入的值作为您的 sess.run 的一部分打电话。
  • 变量 - 这些是可变张量,可在 sess.run 的一次执行中保留其值。到下一个。这些是唯一在整个 session 生命周期中保持其状态的张量类型。
  • 计算张量(OP/操作)- 这些是计算值,例如 tf.add(a,b) ,该值在调用 sess.run 结束时被丢弃(或返回) 。它们只是计算出来的。
  • 常量 - 例如tf.constant(12)

变量需要精确初始化,因为它们维护状态,因此它们需要一个初始状态。这就是为什么您必须在方法 #1 中运行初始化程序的原因。

另一方面,每次调用sess.run时都会计算并丢弃OP。 。这就是您在方法 #2 中所做的。您执行了计算,并提供了执行该计算所需的一切(两个常量)。因此,tensorflow 执行了请求的计算,将结果返回给您,然后丢弃结果。

请注意方法#1 中的独特差异。如果您要请求 ans 的值在未来的某个时刻 sess.run(ans) ,它只会检索变量的值并返回它(不执行计算)。在方法 #2 中,如果您请求 ans1 的值 future 与sess.run(ans1)它必须为您再次执行计算。

关于python - 如果我们可以直接使用变量而无需初始化,为什么我们在tensorflow中使用tf.Variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49720109/

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