【发布时间】:2019-06-11 21:19:55
【问题描述】:
我想找到张量的一部分,然后为其分配一个常数,但我收到了这个错误。 在张量流中似乎不允许分配给张量。考虑到这一点,有人知道我该如何完成这个吗?
例如,如果张量是这样的:
tf_a2 = tf.Variable(([[2, 5, 1, 4, 3],
[1, 6, 4, 2, 3],
[0, 0, 0, 6, 6],
[2, 1, 1, 3, 3],
[4, 4, 1, 2, 3]]))
我想在每行中找到它们具有相同值的元素,然后我用 N 替换除左侧第一个元素之外的任何元素。
比如上例中,row=3,三个元素=0,所以
我将最左边的元素保持不变,然后用N 替换具有相同值的右边元素。在同一行中,有两个元素的值为 6,我保留了最左边的元素,并将之后的所有元素替换为 N。
在 row=4 ,1 中重复两次,我再次保留最左边的一项并替换任何具有相同值的右侧项。
在 =5 行中,4 又重复了两次。我保留最左边的项目,然后用 N 替换具有相同值的任何项目。
所以对于 N= 9,结果将是:
[[2 5 1 4 3]
[1 6 4 2 3]
[0 9 9 6 9]
[2 1 9 3 9]
[4 9 1 2 3]]
我在下面的 numpy 中有正确的代码:
numpy code: (a2[:,1:])[a2[:,1:]==a2[:,:-1]] = N
但我需要在 tensorflow 中执行此操作,我尝试了以下代码,尽管它仍然会引发相同的错误:
tf.where(tf.equal(a2[:,1:], a2[:, :-1]),N,a2[:,1:])
The error:
a2[:,1:][a2[:,1:]==a2[:,:-1]] = N
TypeError: 'Tensor' object does not support item assignment
我也在这里查看了具有相同错误的链接,但他们提出了一个完全关于他们的编码与我的代码不匹配的解决方案。
提前谢谢你
【问题讨论】:
-
请提供导致上述错误的Minimal, Reproducible Example。还请包括完整的回溯。
-
好的,我正在添加它
-
@a_guest 谢谢你关注我的问题,我已经更新了,如果我需要添加更多数据,请告诉我。
-
您的代码示例仍然不是独立的。请使用我们可以复制和粘贴的内容进行更新,以验证您描述的行为。此外,语句“我想找到左右项相同的行,然后将其更改为像N这样的常数。”对我来说不清楚。你能详细说明一下吗?这里的“左”和“右”元素是什么意思?
-
@a_guest 我已经用一个很好的例子和解释更新了我的问题
标签: python numpy tensorflow