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

Градиент через решение системы в PyTorch

Линейная система может стоять внутри обучаемого графа. Функция solve из модуля linalg находит вектор x из равенства A @ x = b. Если матрица или правая часть участвуют в графе, обратный проход доходит и до них.

Зададим симметричную матрицу и правую часть с записью градиента, решим систему, сложим компоненты ответа и выполним обратный проход:

import torch A = torch.tensor([[2.0, 1.0], [1.0, 3.0]], requires_grad=True) b = torch.tensor([1.0, 2.0], requires_grad=True) x = torch.linalg.solve(A, b) loss = x.sum() loss.backward() print(A.grad) print(b.grad)

Для матрицы [[4.0, 0.0], [0.0, 2.0]] и правой части [2.0, 6.0] с записью градиента найдите решение, возьмите сумму компонент и выполните обратный проход. Выведите градиент правой части.

Решите систему с матрицей [[1.0, 0.0], [0.0, 1.0]] и b = [3.0, 5.0], где записывается градиент только у b. Суммируйте ответ и выведите градиент правой части после обратного прохода.

Для A = [[2.0, 0.0], [0.0, 2.0]] и b = [1.0, 1.0] с записью на обоих тензорах получите решение, умножьте первую компоненту на вторую и найдите обратный проход от этого произведения. Выведите градиент матрицы.

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