Как использовать tf.scatter_nd с многомерными тензорамиPython

Программы на Python
Ответить
Anonymous
 Как использовать tf.scatter_nd с многомерными тензорами

Сообщение Anonymous »

Я пытаюсь создать новый тензор () со значениями другого тензора (), размещенный в соответствии с тензором idx. Форма вывода должна быть [batch_size, 1, 4, 4] (например, изображение размером 2x2 пикселя и один канал), а update имеет форму [batch_size, 3].
Я прочитал документацию Tensorflow (я работаю с версией графического процессора 1.13.1) и обнаружил, что tf.scatter_nd должен подойти для моей проблемы. Проблема в том, что я не могу заставить это работать; Кажется, у меня возникли проблемы с пониманием того, как мне организовать idx.
Давайте рассмотрим пакетный_размер = 2, поэтому я делаю следующее:

Код: Выделить всё

updates = tf.constant([[1, 2, 3], [4, 5, 6]])  # shape [2, 3]
output_shape = tf.constant([2, 1, 4, 4])
idx = tf.constant([[[1, 0], [1, 1], [1, 0]], [[0, 0], [0, 1], [0, 2]]])  # shape [2, 3, 2]
idx_expanded = tf.expand_dims(idx, 1)  # so I have shape [2, 1, 3, 2]
output = tf.scatter_nd(idx_expanded, updates, output_shape)
Я ожидаю, что это сработает, но это не так; это выдает мне эту ошибку:

Код: Выделить всё

ValueError: The outer 3 dimensions of indices.shape=[2,1,3,2] must match the outer 3 dimensions of updates.shape=[2,3]: Shapes must be equal rank, but are 3 and 2 for 'ScatterNd_7' (op: 'ScatterNd') with input shapes: [2,1,3,2], [2,3], [4]
Я не понимаю, почему ожидается, что обновления будут иметь размерность 3. Я думал, что idx должен иметь смысл с выходной_формой (вот почему я использовалexpand_dims), а также с обновлениями (укажите два индекса для трех точек), но очевидно, что я здесь что-то упускаю.
Буду признателен за любую помощь.>

Подробнее здесь: https://stackoverflow.com/questions/569 ... al-tensors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»