X. *_*. L 6 attributes object tensorflow tensor
当我尝试使用assign_add 或assign_sub 函数时,我遇到了错误“Tensor”对象没有属性“assign_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>
Run Code Online (Sandbox Code Playgroud)
然后我在 t1 和 t2 上使用 assign_add 来创建 t3
>>> t3 = tf.assign_add(t1,t2)
>>> t3
<tf.Tensor 'AssignAdd_4:0' shape=(2, 3, 4) dtype=int32_ref>
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用 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])
Run Code Online (Sandbox Code Playgroud)
但有错误,
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'
Run Code Online (Sandbox Code Playgroud)
使用assign_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'
Run Code Online (Sandbox Code Playgroud)
知道哪里错了吗?谢谢。
您在这里尝试做的事情有点令人困惑。我认为您不能同时更新切片并创建新的张量。
如果您想在创建之前更新切片t4,请按照此处的tf.scatter_add()建议使用(或tf.scatter_sub()或tf.scatter_update()相应地)。例如:
sa = tf.scatter_add(t1, [1], t2[1:2])
Run Code Online (Sandbox Code Playgroud)
然后,如果你想t4使用 newt1[1]和获得新的张量t2[1],你可以这样做:
with tf.control_dependencies([sa]):
t4 = tf.add(t1[1],t2[1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8617 次 |
| 最近记录: |