В pytorch, как заполнить тензор другим тензором? - PullRequest
2 голосов
/ 01 июня 2019

Я ищу способ увеличить размер изображения, добавив 0 значений к правому и нижнему краям изображения.Мой первоначальный план - использовать nn.padding для добавления края, пока я не столкнусь с этой ошибкой:

  File "/home/shared/virtualenv/dl-torch/lib/python3.7/site-packages/torch/nn/functional.py", line 2796, in pad
    assert len(pad) % 2 == 0, 'Padding length must be divisible by 2'
AssertionError: Padding length must be divisible by 2

Похоже, что факел пытается дополнить изображение с обеих сторон!Есть ли простой способ переопределить это и заполнить тензор в верхней левой части другого изображения?

1 Ответ

1 голос
/ 01 июня 2019

С помощью nn.ConstantPad2d можно отдельно указать количество элементов заполнения во всех четырех направлениях.

>>> t = torch.randn(2,3)
>>> t
tensor([[ 0.1254,  0.6358,  0.3243],
        [ 0.7005, -0.4931,  1.0582]])
>>> p = torch.nn.ConstantPad2d((0, 4, 0, 2), 0)
>>> p(t)
tensor([[ 0.1254,  0.6358,  0.3243,  0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.7005, -0.4931,  1.0582,  0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000]])
...