我正在阅读整个Tensorflow源代码,并且一直困惑于此。在Op中,我们可以获得输入张量的基础数据缓冲区并更改其值,但此更改不会反映在此op之外(输入不是Ref类型)。
例如, y = op1(x) z = op2(x) 在op1中,假设我们获取x的底层缓冲区并更改其值,但是当我运行y_val,z_val = sess.run([y,z])时,似乎这不会影响z的值(它真的是x变化,z应该改变。)
这里由于x张量由两个ops消耗,我最初认为也许张量流将x分成两个张量,一个作为op1的输入,另一个作为op2的输入。但是,我检查了代码,似乎没有。
另一种可能性是张量是写时复制,但在我检查代码之后似乎也没有。
任何人都知道这里到底发生了什么?非常感谢。