Затухание весов при обучении в PyTorch
Класс AdamW считает шаг
так же, как
Adam,
но затухание весов
не смешивает с адаптивным
делителем.
На маленькой модели сделаем один шаг с ненулевым затуханием весов в настройках и выведем число ошибки:
import torch
import torch.nn as nn
torch.manual_seed(0)
model = nn.Linear(2, 1)
optimizer = torch.optim.AdamW(
model.parameters(),
lr=0.1,
weight_decay=0.01,
)
criterion = nn.MSELoss()
x = torch.tensor([[1.0, 0.0]])
y = torch.tensor([[2.0]])
optimizer.zero_grad()
out = model(x)
loss = criterion(out, y)
loss.backward()
optimizer.step()
print(loss.item()) # выведет 6.693990707397461
Зафиксируйте зерно 0, соберите
линейный слой 2 на 1
и подключите к нему правило
обновления из этого урока
со скоростью 0.1 и
затуханием 0.01.
Сделайте один шаг по
среднеквадратичной ошибке
на одном примере и выведите
получившееся число ошибки.
Создайте преобразование
3 на 2 и объект
обновления с затуханием
весов 0.001 при
скорости 0.05.
Выведите тип объекта
обновления.
При зерне 1 возьмите
линейный слой 1 на 1,
один вход [[3.0]] и
цель [[1.0]].
После одного шага с
затуханием 0.1 выведите
ошибку до второго знака
после запятой.