Свёртка в PyTorch
Класс Conv2d строит слой,
который пробегает маленьким окном
по карте каналов и собирает новые
фильтры. При создании задают число
входных каналов, число выходных
фильтров и размер окна.
Создадим слой на три входных канала,
шестнадцать фильтров и окно 3
на 3, подадим батч и
выведем размер результата:
import torch
import torch.nn as nn
batch = torch.randn(2, 3, 8, 8)
layer = nn.Conv2d(3, 16, kernel_size=3)
result = layer(batch)
print(result.shape) # выведет torch.Size([2, 16, 6, 6])
Число картинок в батче не меняется. Вместо трёх каналов на выходе шестнадцать карт признаков. Высота и ширина уменьшаются, если окно не покрывает край без дополнения.
import torch
import torch.nn as nn
batch = torch.ones(1, 3, 10, 10)
layer = nn.Conv2d(3, 4, kernel_size=5)
result = layer(batch)
print(result.shape) # выведет torch.Size([1, 4, 6, 6])
Соберите слой с 1 входным
каналом, 8 фильтрами и
окном 5. Подайте батч
2 на 1 на 10
на 10 из единиц.
Выведите размеры результата.
Опишите преобразование с 3
каналами на входе, 12
на выходе и окном 3.
Пропустите через него случайный
батч 4 картинок размером
16 на 16.
Выведите размеры результата.
Возьмите нулевой пакет 1
на 2 на 20 на 20
и слой с двумя входными каналами,
одним фильтром и окном 7.
Выведите размеры после прохода.