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

Нормализация батча в PyTorch

Для стабильного обучения свёрточных сетей каналы батча часто нормализуют. Класс BatchNorm2d получает число каналов такое же, как у входной карты, и пересчитывает среднее и разброс по пакету и пространству.

Создадим слой на три канала, явно включим режим обучения и выведем форму результата:

import torch import torch.nn as nn batch = torch.randn(2, 3, 8, 8) norm = nn.BatchNorm2d(3) norm.train() result = norm(batch) print(result.shape) # выведет torch.Size([2, 3, 8, 8])

В режиме оценки используют накопленную статистику. Вызовем метод eval и снова прогоним тот же батч:

import torch import torch.nn as nn batch = torch.randn(2, 3, 8, 8) norm = nn.BatchNorm2d(3) norm.eval() result = norm(batch) print(result.shape) # выведет torch.Size([2, 3, 8, 8])

Соберите пакет 4 на 8 на 16 на 16 из единиц и слой нормализации на 8 каналов. Включите режим обучения, прогоните батч и выведите размеры результата.

Подайте случайный тензор 1 на 3 на 5 на 5 через нормализацию на 3 канала в режиме оценки. Выведите размеры на выходе.

Опишите выравнивание для 16 каналов. Переключите его в режим обучения, обработайте нулевой батч 2 на 16 на 8 на 8 и выведите размеры полученной карты.

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