Pytorch Частичные производные, такие как tf.gradients с параметром stop_gradients - PullRequest
1 голос
/ 25 апреля 2020

Есть ли способ расчета частных производных вместо общей производной с помощью Pytorch, например tf.gradients с параметром stop_gradients https://www.tensorflow.org/api_docs/python/tf/gradients

Пример:

a = torch.tensor(1., requires_grad=True)
b = 2 * a
c = a + b
print(torch.autograd.grad(c, a, retain_graph=True))

Выход (tensor(3.),), ожидаемый выход: 1 для частной производной.

Я знаю, что мы можем использовать b = 2*(a.detach()). Но что, если d=2*c. В этом случае я хочу продолжать вычислять общую производную dd/da. Я хочу получить dd/da=6 точно так же, как нет a.detach вместо 2.

Фон: я пытаюсь вычислить частичный градиент последнего скрытого слоя относительно первого скрытого в RNN. Тогда мне все еще нужно вычислить loss.backward(), где я не хочу отсоединять скрытый слой.

Спасибо всем.

...