(已解决)多卡训练时报错RuntimeError: grad can be implicitly created only for scalar outputs
背景
博主第一次使用多卡训练,在程序中添加了如下代码
# 包装为并行风格模型
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2,3'
device_ids = [0, 1, 2, 3]
model.to("cuda:0")
model = torch.nn.DataParallel(model, device_ids=device_ids)
报错关键信息
1. UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.
分析: 使用model = torch.nn.DataParallel(model, device_ids=device_ids)导致
2. loss.backward()
3. raise RuntimeError("grad can be implicitly created only for scalar outputs")
问题出在反向传播时数据的格式标量向量不一致(具体怎样还没搞清楚)
解决办法
将loss.backward()改为loss.backward(torch.ones(loss.shape).to("cuda:0"))
另一种改法
loss.sum().backward()
效果
在命令行输入watch -n 1 nvidia-smi可以看到四张卡都在使用,但是第一站明显占显存多于其余三张
(已解决)多卡训练时报错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)
文章目录 官方文档 简单示例 示例1 示例2(报错(RuntimeError: grad can be implicitly created only for scalar outputs)解决方法) ...
- RuntimeError: grad can be implicitly created only for scalar outputs
这个的原因是梯度只能为标量(即一个数)输出隐式地创建 也就是说传递的时候loss.backward()需要加上一个参数 loss.backward(torch.ones_like(loss)) 这样就 ...
- RuntimeError: grad can be implicitly created only for scalar outputs的原因:Pytorch不支持对张量的求导
一.背景介绍 原则上,Pytorch不支持对张量的求导,即如果z是张量的话,需要先将其转为标量. 浏览了很多博客,给出的解决方案都是说在求导时,加一个torch.ones_like(z)的参数. 下面 ...
- 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) ...
- (已解决)wamp + Apache报错:出现403Forbidden You don't have permission to access / on this server.
文章目录 `解决办法:` `*** `附件 · 延伸阅读 · 参考: 解决办法: 注意: 案例环境:win7 x64 或 win10 仅仅只需要修改apache配置文件httpd.conf 即可. 上 ...
- 如何解决移动硬盘弹出时报错:设备正在使用中
如何解决移动硬盘弹出时报错:设备正在使用中 一.弹出usb attached scsl大容量储存设备时出问题 在使用Windows10系统的时候,我们在弹出U盘或者移动硬盘时,有时会出现"弹 ...
- 解决git在push时报错fatal: unable to access ‘https://github.com/sup0C/a.git/‘: errno 10054
解决git在push时报错fatal: unable to access 'https://github.com/sup0C/a-repository-for--git/': OpenSSL SSL_ ...
- 解决sudo update-initramfs -u 时报错
解决 sudo update-initramfs -u 时报错update-initramfs: Generating /boot/initrd.img-5.4.0-56-generic ,I: Th ...
- 已解决(Python语法报错)SyntaxError: invalid syntax
已解决(Python语法报错)SyntaxError: invalid syntax 文章目录 报错信息 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 报错信息 粉丝群里面一 ...
最新文章
- java MDC_log4j MDC实现日志追踪
- 【Python学习系列十五】pandas库DataFrame行列操作使用方法
- ServHa双机热备简单配置
- @程序员,物联网发展的三大技术方向
- 5个月自学,零基础至日语2级全攻略
- Atitit 开发效率的提升艺术 艾提拉著 目录 1. 主要几个层次上简化开发	2 1.1. 管理创新	2 1.2. 开发体系方法使用简单方法	2 1.3. 技术选型使用简单框架模式	2 1.4.
- 输入一个年份,并判断是否为闰年
- VMware Workstation 16.2.2 Pro for Windows SLIC 2.6 Unlocker
- 诺基亚N8-00测评
- 将HaneWin DHCP 注册为服务
- 微信linux 下载文件夹,把Windows下微信文件夹复制到Deepin-WeChat目录以更新微信
- 现代优化算法 (一):模拟退火算法 及应用举例
- 为什么有了哈希算法还需要一致性哈希?
- 12 如何用网格策略网住收益?——实操篇
- 复现文件上传漏洞(靶场练习)
- 了解第二部分多武装匪徒的强化学习手
- 视频教程-2019 react入门至高阶实战,含react hooks-ReactJS
- 国外问卷调查这个项目可以做吗?国外问卷调查怎么赚钱?
- Protocol Buffers和JSON相互转换
- 天天在做大数据,你的时间都花在哪了