тензорный эквивалент pytorch ReplicationPad2d

Я пытаюсь понять, как сделать тензорный эквивалент следующего заполнения в pytorch:

nn.ReplicationPad2d((1, 0, 1, 0))

Я пробовал следующее, но это работает только в том случае, если входной тензор на самом деле 2x2:

tf.pad(my_tensor, [[1, 0], [1, 0]], "SYMMETRIC")

person Luke    schedule 22.02.2019    source источник


Ответы (1)


Эквивалентом для Tensorflow является tf.pad(my_tensor,[[0,0],[0,0],[1,0],[1,0]],"SYMMETRIC"). (Это предполагает, что вы заинтересованы в работе с четырехмерными тензорами, причем первые два измерения — это пакет и канал).

В Tensorflow вам нужно явно указать отступы для всех четырех измерений. Если вы не хотите, чтобы размеры пакета и канала были дополнены (в сверточных сетях вам обычно не требуется их дополнение), вам нужно явно запросить заполнение нулями в обоих этих измерениях с обеих сторон тензора. Вот почему я добавил [0,0],[0,0] перед вашим [1,0],[1,0].

В Pytorch уже предполагается, что экземпляр nn.ReplicationPad2d дополняет четырехмерный тензор без заполнения первых двух измерений. Вот почему вы инициализируете экземпляр, указав заполнение только в двух дополнительных измерениях.

person Lior    schedule 22.02.2019
comment
Таким образом, с последними каналами это будет tf.pad(my_tensor,[[0,0],[1,0],[1,0], [0,0]],"SYMMETRIC") - person Luke; 23.02.2019