Pytorch Autograd:运行时错误“只能为标量输出隐式创建grad”是什么意思

A.E*_*A.E 4 automatic-differentiation neural-network tensorflow pytorch autograd

我试图深入了解 Pytorch autograd;我想通过如下所示的 sigmoid 函数观察简单张量的梯度:

import torch
from torch import autograd 

D = torch.arange(-8, 8, 0.1, requires_grad=True)

with autograd.set_grad_enabled(True):
    S = D.sigmoid()
S.backward()
Run Code Online (Sandbox Code Playgroud)

我的目标是获得 D.grad() 但即使在调用它之前我也收到运行时错误:

RuntimeError: grad can be implicitly created only for scalar outputs
Run Code Online (Sandbox Code Playgroud)

我看到另一篇有类似问题的帖子,但那里的答案不适用于我的问题。谢谢

jod*_*dag 6

该错误意味着您只能.backward在幺正/标量张量上运行(不带参数)。即具有单个元素的张量。

例如,你可以做

T = torch.sum(S)
T.backward()
Run Code Online (Sandbox Code Playgroud)

因为T将是标量输出。

我在此答案中发布了一些有关使用 pytorch 计算张量导数的更多信息。