Более эффективный способ вычисления элементных градиентов (якобиан) в Pytorch при сохранении create_graphPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Более эффективный способ вычисления элементных градиентов (якобиан) в Pytorch при сохранении create_graph

Сообщение Anonymous »

В настоящее время я использую TORCH.Autograd.function.function.function.jacobian для вычисления для каждого образца, elementwise градиенты скалярного выхода модели W.R.T. его входные данные. Мне нужно сохранить create_graph = true , потому что я хочу, чтобы полученные якобийские записи сами по себе требовали градиентов (для дальнейших расчетов).
Вот минимальный пример того, что я делаю:

import torch
from torch.autograd.functional import jacobian

def method_jac_strict(inputs, forward_fn):
# inputs: (N, F)
# forward_fn: (N, F) -> (N, 1)
# output: (N, F).

# compute full Jacobian:
d = jacobian(forward_fn, inputs, create_graph=True, strict=True) # (N, 1, N, F)
d = d.squeeze() # (N, N, F)

# extract only the diagonal block (each output wrt its own input sample): (N, F)
d = torch.einsum('iif->if', d)
return d


a Extraitiation - зависимости от партийного образца
Моя модель может включать в себя слои, такие как Batchnorm, поэтому образцы в партии не являются действительно независимыми. Тем не менее, я забочусь только о «элементных» градиентах - т.е. Обработка каждого скалярного вывода, как если бы он зависел только от собственного входного образца и игнорирования терминов поперечного образца.
Вопрос
Есть ли более эффективный/идиоматический способ в питте Диагональный?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... orch-while
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»