我试图深入了解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,也有类似的问题,但是那边的答案不适用于我的问题。谢谢
答案 0 :(得分:1)
该错误表示您只能在单一/标量张量上运行.backward
(不带参数)。即一个具有单个元素的张量。
例如,您可以
T = torch.sum(S)
T.backward()
因为T
将是标量输出。
我在this answer中发布了有关使用pytorch计算张量的导数的更多信息。