为什么每次向后传播函数,火炬梯度都会线性增加?

问题描述 投票:0回答:1

我试图了解火炬反向传播的工作原理,并编写了以下代码。

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 ....

python machine-learning pytorch torch
1个回答
0
投票

累积渐变直到清除。从the docs(强调我的):

© www.soinside.com 2019 - 2024. All rights reserved.