Класс ReflectionPad2d
Класс ReflectionPad2d добавляет отражённые значения по краям двумерного тензора (изображения или карты признаков). Отражённое заполнение копирует значения с границы и зеркально отражает их, что позволяет сохранить структуру данных на краях. Первым параметром передаётся размер заполнения в виде кортежа (padding_left, padding_right, padding_top, padding_bottom) или целого числа padding, которое применяется ко всем четырём сторонам.
Синтаксис
torch.nn.ReflectionPad2d(padding)
Параметры:
-
padding- размер заполнения: целое число или кортеж из 2 или 4 элементов.
Пример
Давайте создадим двумерный тензор размером 3x3 и применим отражённое заполнение с отступом 1 по всем сторонам:
import torch
from torch import nn
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
pad = nn.ReflectionPad2d(1)
res = pad(t)
print(res)
Результат выполнения кода:
tensor([
[9, 8, 7, 8, 9],
[6, 5, 4, 5, 6],
[3, 2, 1, 2, 3],
[6, 5, 4, 5, 6],
[9, 8, 7, 8, 9],
])
Как видно, значения на границах были отражены зеркально.
Пример
Давайте применим заполнение с разными отступами для каждой стороны с помощью кортежа из 4 элементов:
import torch
from torch import nn
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
pad = nn.ReflectionPad2d((1, 2, 1, 2))
res = pad(t)
print(res)
Результат выполнения кода:
tensor([
[9, 8, 7, 8, 9, 8],
[6, 5, 4, 5, 6, 5],
[3, 2, 1, 2, 3, 2],
[6, 5, 4, 5, 6, 5],
[9, 8, 7, 8, 9, 8],
[6, 5, 4, 5, 6, 5],
])
Пример
Давайте применим отражённое заполнение к пакету изображений с размерностью (батч, каналы, высота, ширина):
import torch
from torch import nn
t = torch.randn(2, 3, 4, 4)
pad = nn.ReflectionPad2d(2)
res = pad(t)
print(res.shape)
Результат выполнения кода:
torch.Size([2, 3, 8, 8])
Размерность тензора увеличилась с 4x4 до 8x8 за счёт добавления отражённых значений.
Смотрите также
-
класс
ZeroPad2d,
который заполняет границы нулями -
класс
ConstantPad2d,
который заполняет границы постоянным значением -
класс
ReplicationPad2d,
который копирует крайние значения для заполнения -
класс
CircularPad2d,
который заполняет границы циклическим повторением