Есть ли способ расчета частных производных вместо общей производной с помощью 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()
, где я не хочу отсоединять скрытый слой.
Спасибо всем.