我正在学习《使用fastai和PyTorch进行编码的深度学习》一书,第四章介绍了PyTorch库中的自动微分函数在一个简单的例子中的使用。
x = tensor([3.,4.,10.]).requires_grad_()
def f(q): return sum(q**2)
y = f(x)
y.backward()
我的问题归结为这个:
y = f(x)
的结果是 tensor(125, grad_fn=AddBackward0)
,但这意味着什么?为什么我要对三个完全不同的输入值求和?我知道,在这种情况下使用
.backward()
与在这种情况下使用.backward(tensor[1.,1.,1.])
缩写相同,但我不明白为什么将列表中的3个无关数字相加有助于获得任何梯度。我理解有所欠缺吗?这里我不需要博士级别的解释。我使用的书的副标题是“没有博士学位的AI应用”。我的梯度经验是从学校开始的,我应该得到一个函数,但我知道Autograd不是这种情况。这个简短示例的图表会很有帮助,但我在网上看到的图表通常包含太多参数或权重和偏差,以至于没法使用,我的思维会迷失在路径中。