Код Middle Инициализация и нормализация обновлено

BatchNorm в режиме обучения

Условие

Напишите batch_norm_train(X, running_mean, running_var, momentum, eps): X это батч (список объектов, у каждого d признаков). Нормируйте каждый признак по статистикам батча (дисперсия с делением на n), γ = 1, β = 0. Обновите скользящие статистики: new = (1 - momentum)·old + momentum·batch, где для running_var берите несмещённую дисперсию батча (деление на n - 1), как в PyTorch. Верните [Y, new_mean, new_var], всё округлено до 4 знаков.

Примеры

batch_norm_train([[1, 10], [3, 30]], [0, 0], [1, 1], 0.1, 0) // [[[-1, -1], [1, 1]], [0.2, 2], [1.1, 20.9]]
batch_norm_train([[2], [2], [2]], [0], [1], 0.5, 0.00001) // [[[0], [0], [0]], [1], [0.5]]
batch_norm_train([[0, 1], [1, 2], [2, 6]], [0.5, 0.5], [2, 2], 0.1, 0.00001) // [[[-1.2247, -0.9258], [0, -0.4629], [1.2247, 1.3887]], [0.55, 0.75], [1.9, 2.5]]

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме