gpt4 book ai didi

python - 在 TensorFlow 中,tf.identity 有什么用?

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

我在一些地方看到了 tf.identity,例如官方 CIFAR-10 教程和 stackoverflow 上的批量标准化实现,但我不明白为什么它是必要的。

它是做什么用的?谁能给出一两个用例?

一个建议的答案是它可以用于 CPU 和 GPU 之间的传输。这对我来说不是很清楚。问题的扩展,基于 this : loss = tower_loss(scope) 在 GPU block 下,这表明 tower_loss 中定义的所有算子都映射到 GPU。然后,在 tower_loss 的末尾,我们在返回之前看到 total_loss = tf.identity(total_loss)。为什么?在这里不使用 tf.identity 会有什么缺陷?

最佳答案

经过一番磕磕绊绊后,我想我注意到了一个适合我所见过的所有示例的单个用例。如果还有其他用例,请举例说明。

用例:

假设您想在每次评估特定变量时运行一个运算符。例如,假设您想在每次评估变量 y 时向 x 添加一个。这似乎可行:

x = tf.Variable(0.0)
x_plus_1 = tf.assign_add(x, 1)

with tf.control_dependencies([x_plus_1]):
y = x
init = tf.initialize_all_variables()

with tf.Session() as session:
init.run()
for i in xrange(5):
print(y.eval())

它没有:它会打印 0, 0, 0, 0, 0。相反,我们似乎需要在 control_dependencies block 内向图中添加一个新节点。所以我们使用这个技巧:

x = tf.Variable(0.0)
x_plus_1 = tf.assign_add(x, 1)

with tf.control_dependencies([x_plus_1]):
y = tf.identity(x)
init = tf.initialize_all_variables()

with tf.Session() as session:
init.run()
for i in xrange(5):
print(y.eval())

这有效:它打印 1、2、3、4、5。

如果在 CIFAR-10 教程中我们删除了 tf.identity,那么 loss_averages_op 将永远不会运行。

关于python - 在 TensorFlow 中,tf.identity 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877523/

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