Instance Normalization нормализует значения активаций по каждому примеру в мини-батче, что помогает стабилизировать и ускорить обучение.
🚩Цели
🟠Устранение статистических различий между примерами
Instance Normalization нормализует каждый пример (или изображение) в мини-батче отдельно, устраняя различия в статистике между разными примерами.
🟠Улучшение визуального качества
Instance Normalization особенно эффективна для задач генерации изображений, таких как стиль-перенос, где важно сохранить стиль и текстуру каждого отдельного изображения.
🟠Стабилизация и ускорение обучения
Подобно другим методам нормализации, Instance Normalization помогает стабилизировать градиенты и ускорить процесс обучения, делая его более устойчивым.
🚩Как работает
🟠Вычисление среднего значения и стандартного отклонения для каждого канала
Для каждого канала вычисляется среднее значение и стандартное отклонение.
🟠Нормализация активаций
Значения активаций нормализуются, вычитая среднее значение и деля на стандартное отклонение.
🟠Скалирование и смещение
Применяются обучаемые параметры скалирования и смещения для каждого канала.
🚩Пример использования
в PyTorch
import torch
import torch.nn as nn
# Пример входного тензора (batch_size, num_channels, height, width)
x = torch.randn(8, 3, 64, 64)
# Инстанс-нормализация
inst_norm = nn.InstanceNorm2d(num_features=3, affine=True)
# Применение нормализации
x_normalized = inst_norm(x)
print(x_normalized.shape)
В TensorFlow
import tensorflow as tf
# Пример входного тензора (batch_size, height, width, num_channels)
x = tf.random.normal((8, 64, 64, 3))
# Инстанс-нормализация
inst_norm = tf.keras.layers.LayerNormalization(axis=[1, 2], center=True, scale=True)
# Применение нормализации
x_normalized = inst_norm(x)
print(x_normalized.shape)
Ставь 👍 и забирай 📚 Базу знаний