Функция PyTorch torch.nn.Dropout2d

PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn


torch.nn.Dropout2dявляется двумерным модулем Dropout в PyTorch.

Он случайным образом обнуляет целые каналы, подходит для карт признаков свёрточных слоёв.

Определение функции

torch.nn.Dropout2d(p=0.5, inplace=False)

Особенности

  • Случайное обнуление вдоль размерности каналов
  • Все каналы каждого образца сохраняют одинаковый шаблон dropout

Примеры использования

Пример 1: Базовое использование

Пример

import torch
import torch.nn as nn

dropout2d = nn.Dropout2d(p=0.5)
dropout2d.train()

# Вход: batch=4, channels=8, height=16, width=16
x = torch.ones(4, 8, 16, 16)

output = dropout2d(x)

# Подсчитать количество отброшенных каналов
non_zero_channels = (output.sum(dim=(2, 3)) != 0).float()
print("Доля ненулевых каналов:", non_zero_channels.mean().item())
print("Ожидается, что сохранится около 0.5 каналов")

Пример 2: Сравнение Dropout

Пример

import torch
import torch.nn as nn

dropout1d = nn.Dropout(0.5)
dropout2d = nn.Dropout2d(0.5)

# Ввод
x = torch.randn(2, 4, 8, 8)

# Dropout: случайным образом обнуляет отдельные элементы
out1 = dropout1d(x)
# Dropout2d: обнуляет по каналам
out2 = dropout2d(x)

print("Форма Dropout:", out1.shape)
print("Форма Dropout2d:", out2.shape)

Пример 3: Использование в CNN

Пример

import torch
import torch.nn as nn

# CNN с Dropout2d
model = nn.Sequential(
    nn.Conv2d(3, 64, 3, padding=1),
    nn.BatchNorm2d(64),
    nn.ReLU(),
    nn.Dropout2d(0.3),  # Dropout на уровне карт признаков
    nn.Conv2d(64, 128, 3, padding=1),
    nn.BatchNorm2d(128),
    nn.ReLU(),
    nn.AdaptiveAvgPool2d(1),
    nn.Flatten(),
    nn.Linear(128, 10)
)

x = torch.randn(4, 3, 32, 32)
output = model(x)

print("Вход:", x.shape, "-> Выход:", output.shape)

Сценарии использования

  • Свёрточные сети: Регуляризация на уровне карт признаков
  • Уменьшение зависимости каналов

Примечание: Dropout2d отключает каналы во время обучения и не влияет во время оценки.


PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn

Другие расширения