Выключение ячеек в PyTorch
При обучении часть ячеек намеренно
обнуляют через класс Dropout.
Модуль случайно выбирает, какие
значения обнулить.
Оставшиеся значения масштабируют,
чтобы суммарный масштаб сигнала
не просел. Долю выключаемых
ячеек задают при создании модуля.
Перед примером зафиксируем зерно
генератора, переведём модуль
в режим обучения через метод
train и подадим ряд из
четырёх чисел:
import torch
import torch.nn as nn
torch.manual_seed(0)
drop = nn.Dropout(0.5)
drop.train()
x = torch.tensor([1.0, 2.0, 3.0, 4.0])
y = drop(x)
print(y) # выведет tensor([0., 0., 6., 0.])
Задайте зерно 0, соберите
модуль, который при обучении
обнуляет половину ячеек, и
переведите его в режим обучения.
Подайте ряд [1.0, 2.0, 3.0]
и выведите тензор после
преобразования.
Задайте зерно 0, соберите
модуль с обнулением каждой
второй ячейки в среднем и
включите режим обучения.
Подайте таблицу из двух строк
[1.0, 1.0, 1.0, 1.0]
и выведите результат.
Задайте зерно 0, соберите
модуль, выключающий половину
ячеек при обучении, вызовите
метод перевода в режим обучения
и подайте ряд [2.0, 4.0, 6.0, 8.0].
Выведите получившийся тензор.