Класс ReplicationPad2d
Класс ReplicationPad2d добавляет границы к двумерному тензору, повторяя значения на краях. Первым параметром передается размер дополнения: либо кортеж из четырех чисел (left, right, top, bottom), либо целое число для одинакового дополнения со всех сторон. В отличие от ZeroPad2d, заполнение нулями не используется, а граничные значения копируются.
Синтаксис
torch.nn.ReplicationPad2d(padding)
Параметры
Модуль принимает следующие параметры:
-
padding- размер дополнения. Может быть целым числом, тогда дополнение будет одинаковым со всех сторон, или кортежем(left, right, top, bottom), где каждое число - неотрицательное целое.
Пример с одинаковым дополнением
Давайте создадим тензор и дополним его одной строкой и столбцом со всех сторон методом повторения границ:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
pad = torch.nn.ReplicationPad2d(1)
res = pad(t)
print(res)
Результат выполнения кода:
tensor([
[1, 1, 2, 3, 3],
[1, 1, 2, 3, 3],
[4, 4, 5, 6, 6],
[7, 7, 8, 9, 9],
[7, 7, 8, 9, 9],
])
Пример с разным дополнением
Теперь дополним тензор с разными размерами по сторонам: слева на 2, справа на 1, сверху на 2, снизу на 1:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
pad = torch.nn.ReplicationPad2d((2, 1, 2, 1))
res = pad(t)
print(res)
Результат выполнения кода:
tensor([
[1, 1, 1, 2, 3, 3],
[1, 1, 1, 2, 3, 3],
[1, 1, 1, 2, 3, 3],
[4, 4, 4, 5, 6, 6],
[7, 7, 7, 8, 9, 9],
[7, 7, 7, 8, 9, 9],
])
Пример с четырехмерным тензором
В нейронных сетях чаще всего используются четырехмерные тензоры формата (batch, channels, height, width). Дополнение применяется только к последним двум измерениям:
import torch
t = torch.tensor([
[
[1, 2, 3],
[4, 5, 6],
]
])
pad = torch.nn.ReplicationPad2d(1)
res = pad(t)
print(res)
Результат выполнения кода:
tensor([
[
[1, 1, 2, 3, 3],
[1, 1, 2, 3, 3],
[4, 4, 5, 6, 6],
[4, 4, 5, 6, 6],
]
])
Смотрите также
-
класс
ZeroPad2d,
который дополняет тензор нулями -
класс
ConstantPad2d,
который дополняет тензор заданным значением -
класс
ReflectionPad2d,
который дополняет тензор отражением значений -
класс
CircularPad2d,
который дополняет тензор циклическим повторением