grad can be implicitly created only for scalar outputs

Posted 我想月薪过万

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grad can be implicitly created only for scalar outputs相关的知识,希望对你有一定的参考价值。

错误原因

你对 张量 进行了梯度求值

解决方法

在求梯度的时候传一个同维度的张量即可。

错误示例代码如下

import torch

# 第一步:创建 tensor
x = torch.ones(2,2,requires_grad=True)
print(x)

# 第二步:对 tensor 做处理
# x的平方
y = x**2
print(y)

# 第三步:求梯度
y.backward()  # 错误出现在这里,因为 y 是一个张量
print(x.grad)

正确示例代码

import torch

# 第一步:创建 tensor
x = torch.ones(2,2,requires_grad=True)
print(x)

# 第二步:对 tensor 做处理
y = x**2
print(y)

# 第三步:求梯度
y.backward(torch.ones(2,2)) # 传入一个相同维度的张量即可
print(x.grad)

以上是关于grad can be implicitly created only for scalar outputs的主要内容,如果未能解决你的问题,请参考以下文章

(已解决)多卡训练时报错RuntimeError: grad can be implicitly created only for scalar outputs

pytorch 1.9.0 backward函数解释以及报错(RuntimeError: grad can be implicitly created only for scalar outputs)

jpa CriteriaQueryNo explicit selection and an implicit one could not be determined

python3.4.0 input Can't convert 'int' object to str implicitly 如何正确输出?

iOS模拟器URLWithString The operation couldn't be completed. (Cocoa error 256.)

ios屏幕录制储存失败因为the operation couldn’t be completed (cocoa error-1.)?