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

Градиентный спуск в PyTorch

Класс SGD обновляет веса по градиентам параметров модуля. При создании ему передают настраиваемые величины модели и скорость шага. Дальше объект сам знает, какие поля сдвигать после обратного прохода.

Возьмём модель с одним линейным слоем, критерий среднего квадрата и один шаг спуска. Сначала очистим поля градиента у параметров, затем прогон, ошибка, обратный проход и обновление весов. Выведем число ошибки:

import torch import torch.nn as nn torch.manual_seed(0) model = nn.Linear(1, 1) criterion = nn.MSELoss() optimizer = torch.optim.SGD( model.parameters(), lr=0.1 ) x = torch.tensor([[1.0], [2.0]]) y = torch.tensor([[2.0], [4.0]]) for p in model.parameters(): p.grad = None pred = model(x) loss = criterion(pred, y) loss.backward() optimizer.step() print(loss) # выведет tensor(7.1321, grad_fn=<MseLossBackward0>)

Соберите модель с линейным слоем на один вход и один выход, критерий регрессии и объект спуска со скоростью 0.05. Подайте столбец [[1.0], [3.0]] и эталон [[2.0], [6.0]]. Очистите градиенты параметров, выполните прогон, найдите расхождение, обратный проход и одно обновление весов. Выведите число ошибки.

Опишите линейный слой 2 на 1, критерий среднего квадрата и спуск со скоростью 0.2 для параметров слоя. Для таблицы [[0.0, 1.0]] и эталона [[1.0]] сделайте полный цикл из одного шага без накопления старого градиента. Выведите ошибку.

Создайте преобразование 1 на 1, критерий для дробных эталонов и объект обновления со скоростью 0.01. По паре [[4.0]] и [[8.0]] после очистки градиентов выполните прогон, подсчёт ошибки, обратный проход и сдвиг весов. Выведите получившееся расхождение.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить