张量流中“y = x”和y = tf.identity(x)之间的区别是什么

问题描述 投票:1回答:1

我对以下代码感到困惑:y = xy = tf.identity(x)。更确切地说,当我运行以下代码片段时,我会感到困惑:

代码1:

import tensorflow as tf
x = tf.Variable(0.0, name="x")
with tf.control_dependencies([x_plus_1]):
    y = x
init = tf.initialize_all_variables()
with tf.Session() as sess:
    init.run()
    for i in range(5):
        print(y.eval())

这将给出输出:0.0 0.0 0.0 0.0 0.0

代码2:

import tensorflow as tf
x = tf.Variable(0.0, name="x")
with tf.control_dependencies([x_plus_1]):
    y = tf.identity(x, name='id')
init = tf.initialize_all_variables()

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

唯一的变化是从y=xy=tf.identity(x),但现在结果是1.0 2.0 3.0 4.0 5.0

非常感谢你。

python tensorflow
1个回答
1
投票

x是Tensor,我们称之为tensor_1。当你说y = x你说变量y具有Tensor tensor_1的值。当你做y = tf.identity(x)时,你正在创建一个新的Tensor,tensor_2,其值与tensor_1相同。但它是图表中的一个不同节点,因此从tensor_1tensor_2的值必须移动。这就是为什么with tf.control_dependencies([x_plus_1])在你的第二个代码中做了一些事情,但在第一个代码中却没有。因为在第一个代码中你没有创建任何control_depdendencies可以使用的新Tensor。

总结y = x使变量y指向x中的同一个对象,但是y = tf.identity(x)创建了一个新的对象,其内容为x

© www.soinside.com 2019 - 2024. All rights reserved.