2017-08-31 2 views
2

versucht, meinen Kopf herum, wie Steigungen dargestellt und wie autograd Werke zu wickeln:Warum erzeugt Autograd keinen Gradienten für Zwischenvariablen?

import torch 
from torch.autograd import Variable 

x = Variable(torch.Tensor([2]), requires_grad=True) 
y = x * x 
z = y * y 

z.backward() 

print(x.grad) 
#Variable containing: 
#32 
#[torch.FloatTensor of size 1] 

print(y.grad) 
#None 

Warum produzieren macht es keinen Gradienten für y? Wenn y.grad = dz/dy, sollte es dann nicht mindestens eine Variable wie y.grad = 2*y erzeugen?

+0

denke ich, das ist ein Interessante Frage, die auf https://discuss.pytorch.org/ –

Antwort

2

Standardmäßig werden Verläufe nur für Blattvariablen beibehalten. Nicht-Blatt-Variablen-Gradienten werden nicht beibehalten, um später untersucht zu werden. Dies wurde von Design getan, um Speicher zu sparen.

-soumith chintala

See: https://discuss.pytorch.org/t/why-cant-i-see-grad-of-an-intermediate-variable/94

Option 1:

Anruf y.retain_grad()

x = Variable(torch.Tensor([2]), requires_grad=True) 
y = x * x 
z = y * y 

y.retain_grad() 

z.backward() 

print(y.grad) 
#Variable containing: 
# 8 
#[torch.FloatTensor of size 1] 

Quelle: https://discuss.pytorch.org/t/why-cant-i-see-grad-of-an-intermediate-variable/94/16

Option 2:

Registrieren Sie eine hook, die im Grunde eine Funktion aufgerufen wird, wenn dieser Gradient berechnet wird. Dann können Sie sie speichern, ordnen, ausdrucken, was auch immer ...

from __future__ import print_function 
import torch 
from torch.autograd import Variable 

x = Variable(torch.Tensor([2]), requires_grad=True) 
y = x * x 
z = y * y 

y.register_hook(print) ## this can be anything you need it to be 

z.backward() 

Ausgang:

Variable containing: 8 [torch.FloatTensor of size 1 

Quelle: https://discuss.pytorch.org/t/why-cant-i-see-grad-of-an-intermediate-variable/94/2

Siehe auch: https://discuss.pytorch.org/t/why-cant-i-see-grad-of-an-intermediate-variable/94/7

+0

gepostet werden sollte, wusste nicht über die retain_grad() -Methode –

Verwandte Themen