Я хочу найти часть тензора и затем присвоить ему постоянное число, но я получил эту ошибку.Похоже, что в тензорном потоке присваивание не допускается.Имея это в виду, у кого-нибудь есть идеи, как мне это сделать?
Так, например, если тензор такой:
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, кроме первого элемента слева.
Например, в примере выше, в строке = 3, три элемента = 0, поэтому я оставил самый левыйто же самое, что и есть, и затем замените нужные элементы с тем же значением на N
.в той же строке находятся два элемента со значением 6, я сохранил самый левый элемент и заменил все элементы после этого на то же значение с N
.
В строке = 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]]
Iу меня правильный код в numpy ниже:
numpy code: (a2[:,1:])[a2[:,1:]==a2[:,:-1]] = N
, но мне нужно сделать это в tenorflow, я пробовал приведенный ниже код, хотя он по-прежнему вызывает ту же ошибку:
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
Я такжеПосмотрел здесь ссылки с той же ошибкой, но они предлагают решение, точно соответствующее их кодированию, которое не соответствует моему коду.
Заранее спасибо