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

Класс Dropout

Класс Dropout предназначен для регуляризации нейронных сетей. В процессе обучения он случайным образом обнуляет часть элементов тензора с заданной вероятностью p, что помогает предотвратить переобучение. Оставшиеся элементы масштабируются на коэффициент 1 / (1 - p), чтобы сохранить сумму активаций.

Основные параметры конструктора:

  • p - вероятность обнуления элемента (от 0 до 1).
  • inplace - булевый флаг, определяющий, выполнять ли операцию над входным тензором без создания нового.

Синтаксис

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

Пример

Создадим слой Dropout и применим его к тензору:

import torch torch.manual_seed(0) dropout = torch.nn.Dropout(p=0.5) t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], ]) res = dropout(t) print(res)

Результат выполнения кода:

tensor([ [ 0.0000, 4.0000, 6.0000], [ 8.0000, 0.0000, 0.0000], ])

Как видно, часть элементов стала нулевой, а оставшиеся были умножены на 2.

Пример

Dropout работает по-разному в режиме обучения и оценки. В режиме обучения элементы обнуляются, а в режиме оценки слой становится тождественным преобразованием:

import torch torch.manual_seed(0) dropout = torch.nn.Dropout(p=0.5) t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], ]) dropout.eval() res = dropout(t) print(res)

Результат выполнения кода:

tensor([ [1., 2., 3.], [4., 5., 6.], ])

Пример

Использование Dropout внутри полносвязной сети:

import torch import torch.nn as nn class MyModel(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(10, 20) self.dropout = nn.Dropout(p=0.5) self.fc2 = nn.Linear(20, 1) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.dropout(x) return self.fc2(x) torch.manual_seed(0) model = MyModel() t = torch.randn(5, 10) res = model(t) print(res.shape)

Результат выполнения кода:

torch.Size([5, 1])

Смотрите также

  • слой Dropout1d,
    применяет регуляризацию к одномерным данным
  • слой Dropout2d,
    используется для регуляризации каналов изображений
  • слой Dropout3d,
    применяется к трехмерным данным
  • слой AlphaDropout,
    реализует выпадение с сохранением среднего и дисперсии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить