РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pytoSpImMp 5 of 82 menu
◀ ▶

Макс-пул в PyTorch

Если нужно сжать карту и оставить самый сильный отклик в каждом фрагменте, берут класс MaxPool2d. Окно скользит по высоте и ширине и на каждом шаге записывает максимум среди попавших ячеек.

Зададим окно 2 на 2 и посмотрим, как меняются размеры батча:

import torch import torch.nn as nn batch = torch.randn(2, 4, 8, 8) pool = nn.MaxPool2d(2) result = pool(batch) print(result.shape) # выведет torch.Size([2, 4, 4, 4])

На маленьком примере видно, какие числа попадают в каждую ячейку результата:

import torch import torch.nn as nn single = torch.tensor([[[[1., 2., 3., 4.], [5., 6., 7., 8.], [9., 10., 11., 12.], [13., 14., 15., 16.]]]]) pool = nn.MaxPool2d(2) print(pool(single)) # выведет tensor([[[[ 6., 8.], [14., 16.]]]])

Создайте карту 1 на 1 на 6 на 6 из целых от 1 до 36 по порядку. Сожмите её окном 3 и выведите размеры и все числа результата.

Возьмите случайный батч 3 на 5 на 12 на 12 и окно максимума 4 без перекрытия. Выведите размеры после сжатия.

Подайте единичную карту 1 на 2 на 8 на 8 в слой, который оставляет максимум в блоке 2 на 2. Выведите размеры выхода.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить