我是pytorch的新手。我想了解为什么我们不能在包含大小为 [2,2] 的张量的变量上调用向后函数。如果我们确实想在一个包含大小为 [2,2] 的张量的变量上调用它,我们必须首先定义一个梯度张量,然后在包含已定义梯度的张量的变量上调用向后函数.
从教程开始 autograd
如果要计算导数,可以对变量调用 .backward()。如果 Variable 是标量(即它包含一个元素数据),则不需要为向后()指定任何参数,但是如果它有更多元素,则需要指定一个 grad_output 参数,它是匹配形状的张量.
基本上要启动链式法则,您需要在输出端设置一个渐变,以使其运行。如果输出是标量损失函数(通常是这样 - 通常您在损失变量处开始向后传递),则其隐含值为 1.0
来自教程:
现在让我们反向传播 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好的解释
Pytorch,什么是梯度参数很好的解释
http://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html教程
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |