pytorch : grad can be implicitly created only for scalar outputs
- 错误信息
File "***.py", line 101, in trainloss.backward()File "***/anaconda3/envs/ngepc/lib/python3.8/site-packages/torch/tensor.py", line 221, in backwardtorch.autograd.backward(self, gradient, retain_graph, create_graph)File "***/anaconda3/envs/ngepc/lib/python3.8/site-packages/torch/autograd/__init__.py", line 126, in backwardgrad_tensors_ = _make_grads(tensors, grad_tensors_)File "***/anaconda3/envs/ngepc/lib/python3.8/site-packages/torch/autograd/__init__.py", line 50, in _make_gradsraise RuntimeError("grad can be implicitly created only for scalar outputs")
RuntimeError: grad can be implicitly created only for scalar outputs
- 原因是函数autograd.grad()的grad_outputs 参数默认是output为数值,Mse损失 参数’none’: no reduction will be applied,将输出矩阵,需要输出矩阵元素的和或均值已得到数值而非矩阵的loss,所以修改如下:
将
self.l = nn.MSELoss(reduction='nobe')
改为:
self.l = nn.MSELoss(reduction='mean')
类似于:将
a=Variable(torch.FloatTensor([1,2,3]),requires_grad=True)autograd.grad(outputs=a,inputs=a)
改为
a=Variable(torch.FloatTensor([1,2,3]),requires_grad=True)autograd.grad(outputs=(a.sum()/a.shape[1]),inputs=a)
pytorch : grad can be implicitly created only for scalar outputs相关推荐
- pytorch: grad can be implicitly created only for scalar outputs 的解决办法
如果X.grad报错: grad can be implicitly created only for scalar outputs 加上去 X.backward(torch.ones_like(X) ...
- pytorch 1.9.0 backward函数解释以及报错(RuntimeError: grad can be implicitly created only for scalar outputs)
文章目录 官方文档 简单示例 示例1 示例2(报错(RuntimeError: grad can be implicitly created only for scalar outputs)解决方法) ...
- grad can be implicitly created only for scalar outputs
1.Autograd:自动求导 torch.Tensor 是这个包的核心类.如果设置它的属性 .requires_grad 为 True,那么它将会追踪对于该张量的所有操作.当完成计算后可以通过调 ...
- DEBUG:grad can be implicitly created only for scalar outputs
DEBUG:grad can be implicitly created only for scalar outputs 解决: 添加 retain_graph=True 只能起效一次
- (已解决)多卡训练时报错RuntimeError: grad can be implicitly created only for scalar outputs
背景 博主第一次使用多卡训练,在程序中添加了如下代码 # 包装为并行风格模型 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID& ...
- RuntimeError: grad can be implicitly created only for scalar outputs的原因:Pytorch不支持对张量的求导
一.背景介绍 原则上,Pytorch不支持对张量的求导,即如果z是张量的话,需要先将其转为标量. 浏览了很多博客,给出的解决方案都是说在求导时,加一个torch.ones_like(z)的参数. 下面 ...
- RuntimeError: grad can be implicitly created only for scalar outputs
这个的原因是梯度只能为标量(即一个数)输出隐式地创建 也就是说传递的时候loss.backward()需要加上一个参数 loss.backward(torch.ones_like(loss)) 这样就 ...
- 高效理解pytorch的backward需要scalar outputs
利用backward时 , 可能经常遇到错误 RuntimeError: grad can be implicitly created only for scalar outputs 理解的最好方式就 ...
- PyTorch grad 与 Optimizer(params) 区别
目录 PyTorch grad 与 Optimizer(params) 区别 PyTorch grad 与 Optimizer(params) 区别 Tensor 可以设置属性 requires_gr ...
最新文章
- 生物信息「知识图谱」
- thinkphp学习笔记13-15集
- 技能UP:SAP CO掌上配置手册
- java string转number_Java 序列化
- P1306-斐波那契公约数【矩阵乘法,数论】
- 【JSON系列】JSON核心知识点总结
- Git笔记(4) 获取仓库
- 阿里云终端连接与实例管理
- DAO层、ENTITY层、SERVICE层、CONTROLLER层
- 1909升级卡64_【春节配置推荐】第3期:设计娱乐万元配置推荐、四代升级建议参考...
- 写小说的人是不是都很聪明呢?
- hue访问mysql,【原创】大叔经验分享(50)hue访问mysql(librdbms)
- mysql web聊天_多嘴WEB聊天室基于PHP+MYSQL的中文聊天室
- Latex 带圈数字
- 《互联网信息资源检索与利用》读书笔记
- 计算机系学霸情书表白,大学生情书:各专业学霸的表白让人大开眼界,网友:果然要多读书...
- win下brat安装与使用
- Ubuntu 16.04安装Matlab R2016b
- 什么是前端、什么是后端
- 【征稿】第三届电子、信息与计算技术前沿国际会议(ICFEICT 2023)