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

时间:2019-10-22 18:21:54

标签: tensorflow neural-network pytorch autograd automatic-differentiation

我试图深入了解Pytorch autograd;我想在通过如下的S型函数后观察简单张量的梯度:

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()

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

RuntimeError: grad can be implicitly created only for scalar outputs

我看到另一个post,也有类似的问题,但是那边的答案不适用于我的问题。谢谢

1 个答案:

答案 0 :(得分:1)

该错误表示您只能在单一/标量张量上运行.backward(不带参数)。即一个具有单个元素的张量。

例如,您可以

T = torch.sum(S)
T.backward()

因为T将是标量输出。

我在this answer中发布了有关使用pytorch计算张量的导数的更多信息。