Класс Fold
Класс Fold применяется для объединения скользящих локальных блоков обратно в исходный тензор. Он выполняет операцию, обратную Unfold. Первым параметром принимает размер выходного тензора output_size, вторым - размер ядра kernel_size, третьим - шаг stride, четвертым - размер отступов padding. Класс часто используется в задачах обработки изображений при реализации обратного распространения в свёрточных слоях.
Синтаксис
torch.nn.Fold(
output_size,
kernel_size,
stride=1,
padding=0
)
Пример
Давайте создадим класс Fold, который объединяет блоки в тензор размером 3x3 с ядром 2x2 и шагом 1:
import torch
fold = torch.nn.Fold(
output_size=(3, 3),
kernel_size=(2, 2),
stride=1
)
print(fold)
Результат выполнения кода:
Fold(output_size=(3, 3), kernel_size=(2, 2), stride=1)
Пример
Давайте объединим блоки в тензор размером 3x3 с ядром 2x2 и шагом 1:
import torch
fold = torch.nn.Fold(
output_size=(3, 3),
kernel_size=(2, 2),
stride=1
)
input = torch.randn(1, 4, 4)
t = fold(input)
print(t.shape)
Результат выполнения кода:
torch.Size([1, 1, 3, 3])
Пример
Давайте объединим блоки с использованием отступов 1:
import torch
fold = torch.nn.Fold(
output_size=(4, 4),
kernel_size=(3, 3),
stride=2,
padding=1
)
input = torch.randn(1, 9, 4)
t = fold(input)
print(t.shape)
Результат выполнения кода:
torch.Size([1, 1, 4, 4])