Я хочу обновить значения тензора, например:

ldream[w,:,x,y,z] = 0

Но продолжайте получать сообщение об ошибке:

TypeError: 'Tensor' object does not support item assignment
1
thedlade 24 Апр 2017 в 05:18

2 ответа

Лучший ответ

Исправлено путем создания логической маски с использованием массива numpy:

ldream_mask = np.zeros(ldream.shape, dtype=np.bool)

Затем выберите нужные индексы и отметьте их как True

ldream_mask[w,:,x,y,z] =  True

Затем с помощью tf.where обновите нужные индексы с помощью ldream_mask

0
thedlade 24 Апр 2017 в 14:01

Кажется, ldream - переменная тензорного потока, которой, к сожалению, нельзя напрямую присвоить значения так же, как массивы numpy.

Чтобы обновить значение тензора в тензорном потоке, вы можете выполнить операцию присваивания, а затем запустить (оценить) эту операцию. Вот пример того, как это сделать:

Tensorflow: как изменить значение в тензоре

Причина этого заключается в том, что когда вы кодируете свои переменные и операции tf, вы фактически «ставите» их на место позже (например, когда вы делаете sess.run); как план того, как тензорный поток действительно будет работать.

0
Community 23 Май 2017 в 11:54
43578796