Класс ConstantPad2d
Класс ConstantPad2d предназначен для дополнения двумерных тензоров константными значениями по краям. Он принимает два основных параметра: кортеж с размерами отступов для левой, правой, верхней и нижней стороны, а также значение, которым будут заполнены новые ячейки. Это полезно, например, для сохранения пространственных размеров при обработке изображений.
Синтаксис
torch.nn.ConstantPad2d(padding, value)
Параметр padding задаёт размеры отступов. Он может быть передан как целое число (одинаковые отступы со всех сторон), кортеж из двух чисел (left, right) (отступы по горизонтали и вертикали) или кортеж из четырёх чисел (left, right, top, bottom) для индивидуального контроля каждой стороны. Параметр value определяет константу для заполнения.
Пример
Дополним тензор размером 2x3 нулями со всех сторон на 1 пиксель:
import torch
from torch import nn
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
])
pad = nn.ConstantPad2d(1, 0)
res = pad(t)
print(res)
Результат выполнения кода:
tensor([
[0, 0, 0, 0, 0],
[0, 1, 2, 3, 0],
[0, 4, 5, 6, 0],
[0, 0, 0, 0, 0],
])
Пример
Используем разные отступы для каждой стороны: левый 2, правый 1, верхний 3, нижний 0 с заполнением значением -1:
import torch
from torch import nn
t = torch.tensor([
[1, 2],
[3, 4],
])
pad = nn.ConstantPad2d((2, 1, 3, 0), -1)
res = pad(t)
print(res)
Результат выполнения кода:
tensor([
[-1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1],
[-1, -1, 1, 2, -1],
[-1, -1, 3, 4, -1],
])
Пример
Применим слой к пакету двумерных карт признаков (формат batch x channels x height x width):
import torch
from torch import nn
t = torch.randn(2, 3, 2, 2)
pad = nn.ConstantPad2d((1, 0, 1, 0), 0.5)
res = pad(t)
print(res.shape)
Результат выполнения кода:
torch.Size([2, 3, 3, 3])
Смотрите также
-
класс
ZeroPad2d,
который заполняет отступы нулями -
класс
ReflectionPad2d,
который отражает значения на границах -
класс
ReplicationPad2d,
который повторяет крайние значения -
класс
CircularPad2d,
который циклически дополняет тензор