我试图了解火炬反向传播的工作原理,并编写了以下代码。
import torch
import numpy
x = torch.tensor(numpy.e, requires_grad=True)
y = torch.log(x)
y.backward()
print(x.grad)
[结果为tensor(0.3679)
,正如预期的那样,为1 / x,它是log(x)w.r.t x的导数,其中x = numpy.e。但是,如果我复制了最后3行而没有重新分配x,即[]
y = torch.log(x) y.backward() print(x.grad)
另一时间,我将得到
tensor(0.7358)
,这是先前结果的两倍。为什么会这样?
我试图了解火炬反向传播的工作原理,并编写了以下代码。 import torch import numpy x = torch.tensor(numpy.e,require_grad = True)y = torch.log(x)y.backward()print(x ....
累积渐变直到清除。从the docs(强调我的):