我是 pytorch 的新手。我想了解为什么我们不能对包含大小为 [2,2] 的张量的变量调用后向函数。
如果我们确实想在包含大小为 [2,2] 的张量的变量上调用它,我们必须首先定义一个梯度张量,然后在包含张量 w.r.t 定义的梯度的变量上调用后向函数。
从教程开始autograd
如果你想计算导数,你可以调用 .backward()
多变的。如果 Variable 是一个标量(即它保存一个元素数据),
你不需要为backward()指定任何参数,但是如果它
有更多元素,您需要指定一个 grad_output 参数,即
匹配形状的张量。
基本上,要启动链式法则,您需要在输出处有一个梯度,才能使其运行。如果输出是标量损失函数(通常是这样 - 通常您在损失变量处开始向后传递),则其隐含值为 1.0
来自教程:
现在让我们 backprop out.backward() 相当于做
out.backward(torch.Tensor([1.0]))
但也许你只想更新一个子图(网络深处的某个地方)......以及 a 的值Variable
是权重矩阵。然后你必须告诉它从哪里开始。来自他们的一位首席开发人员(链接中的某处)
对,那是正确的。我们只支持标量微分
函数,所以如果你想向后开始形成一个非标量值
你需要提供dout / dy
梯度参数
https://discuss.pytorch.org/t/how-the-backward-works-for-torch-variable/907/8 https://discuss.pytorch.org/t/how-the-backward-works-for-torch-variable/907/8好的解释
Pytorch,什么是梯度参数 https://stackoverflow.com/questions/43451125/pytorch-what-are-the-gradient-arguments很好的解释
http://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html http://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html教程
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)