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

Градиент промежуточного тензора в PyTorch

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

Метод retain_grad просит автоград сохранить этот градиент в поле тензора. Это не отрезает звено от графа, в отличие от отделения копии без истории.

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

import torch x = torch.tensor(2.0, requires_grad=True) y = x * x y.retain_grad() z = y * y z.backward() print(x.grad) # выведет tensor(32.) print(y.grad) # выведет tensor(8.)

Для дробного 3.0 с записью возведите его в квадрат, на промежуточном результате включите сохранение градиента, умножьте его на себя и выполните обратный проход. Выведите градиент аргумента и градиент промежуточного тензора.

Для дробного 1.5 с записью удвоьте значение, сохраните градиент на удвоенном звене, прибавьте единицу и найдите обратный проход от суммы. Выведите содержимое поля градиента у промежуточного тензора.

Постройте цепочку квадрат и ещё раз квадрат для 4.0 с записью, но не включайте сохранение на середине. После обратного прохода выведите поле градиента промежуточного тензора.

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