gpt4 book ai didi

object - “张量”对象没有属性 'assign_add'

转载 作者:行者123 更新时间:2023-12-02 10:52:10 25 4
gpt4 key购买 nike

当我尝试使用分配_add 或分配_sub 函数时,遇到错误“张量”对象没有属性“分配_add”。代码如下所示:

我定义了两个张量 t1 和 t2,具有相同的形状和相同的数据类型。

>>> t1 = tf.Variable(tf.ones([2,3,4],tf.int32))
>>> t2 = tf.Variable(tf.zeros([2,3,4],tf.int32))
>>> t1
<tf.Variable 'Variable_4:0' shape=(2, 3, 4) dtype=int32_ref>
>>> t2
<tf.Variable 'Variable_5:0' shape=(2, 3, 4) dtype=int32_ref>

然后我在 t1 和 t2 上使用 allocate_add 来创建 t3

>>> t3 = tf.assign_add(t1,t2)
>>> t3
<tf.Tensor 'AssignAdd_4:0' shape=(2, 3, 4) dtype=int32_ref>

然后我尝试使用 t1[1] 和 t2[1] 创建一个新的张量 t4,它们是具有相同形状和相同数据类型的张量。

>>> t1[1]   
<tf.Tensor 'strided_slice_23:0' shape=(3, 4) dtype=int32>
>>> t2[1]
<tf.Tensor 'strided_slice_24:0' shape=(3, 4) dtype=int32>
>>> t4 = tf.assign_add(t1[1],t2[1])

但出现错误,

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/admin/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/state_ops.py", line 245, in assign_add
return ref.assign_add(value)
AttributeError: 'Tensor' object has no attribute 'assign_add'

使用 allocate_sub 时出现同样的错误

>>> t4 = tf.assign_sub(t1[1],t2[1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/admin/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/state_ops.py", line 217, in assign_sub
return ref.assign_sub(value)
AttributeError: 'Tensor' object has no attribute 'assign_sub'

知道哪里错了吗?谢谢。

最佳答案

错误是因为 t1 是一个 tf.Variable 对象,而 t1[ 1 ] 是一个 tf.Tensor。(您可以在打印语句的输出中看到这一点。)。t2 和 t[[2]] 也是如此

事实上,tf.Tensor 不能被改变(它是只读的),而 tf.Variable 可以(读和写)请参阅here 。由于 tf.scatter_add 执行就地添加,因此它不适用于 t1[ 1 ] 和 t2[ 1 ]作为输入,而t1和t2作为输入则不存在这样的问题。

关于object - “张量”对象没有属性 'assign_add',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161455/

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