背景

博主第一次使用多卡训练,在程序中添加了如下代码

# 包装为并行风格模型
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相关推荐

  1. 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)解决方法) ...

  2. RuntimeError: grad can be implicitly created only for scalar outputs

    这个的原因是梯度只能为标量(即一个数)输出隐式地创建 也就是说传递的时候loss.backward()需要加上一个参数 loss.backward(torch.ones_like(loss)) 这样就 ...

  3. RuntimeError: grad can be implicitly created only for scalar outputs的原因:Pytorch不支持对张量的求导

    一.背景介绍 原则上,Pytorch不支持对张量的求导,即如果z是张量的话,需要先将其转为标量. 浏览了很多博客,给出的解决方案都是说在求导时,加一个torch.ones_like(z)的参数. 下面 ...

  4. 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) ...

  5. (已解决)wamp + Apache报错:出现403Forbidden You don't have permission to access / on this server.

    文章目录 `解决办法:` `*** `附件 · 延伸阅读 · 参考: 解决办法: 注意: 案例环境:win7 x64 或 win10 仅仅只需要修改apache配置文件httpd.conf 即可. 上 ...

  6. 如何解决移动硬盘弹出时报错:设备正在使用中

    如何解决移动硬盘弹出时报错:设备正在使用中 一.弹出usb attached scsl大容量储存设备时出问题 在使用Windows10系统的时候,我们在弹出U盘或者移动硬盘时,有时会出现"弹 ...

  7. 解决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_ ...

  8. 解决sudo update-initramfs -u 时报错

    解决 sudo update-initramfs -u 时报错update-initramfs: Generating /boot/initrd.img-5.4.0-56-generic ,I: Th ...

  9. 已解决(Python语法报错)SyntaxError: invalid syntax

    已解决(Python语法报错)SyntaxError: invalid syntax 文章目录 报错信息 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 报错信息 粉丝群里面一 ...

最新文章

  1. java MDC_log4j MDC实现日志追踪
  2. 【Python学习系列十五】pandas库DataFrame行列操作使用方法
  3. ServHa双机热备简单配置
  4. @程序员,物联网发展的三大技术方向
  5. 5个月自学,零基础至日语2级全攻略
  6. Atitit 开发效率的提升艺术 艾提拉著 目录 1. 主要几个层次上简化开发 2 1.1. 管理创新 2 1.2. 开发体系方法使用简单方法 2 1.3. 技术选型使用简单框架模式 2 1.4.
  7. 输入一个年份,并判断是否为闰年
  8. VMware Workstation 16.2.2 Pro for Windows SLIC 2.6 Unlocker
  9. 诺基亚N8-00测评
  10. 将HaneWin DHCP 注册为服务
  11. 微信linux 下载文件夹,把Windows下微信文件夹复制到Deepin-WeChat目录以更新微信
  12. 现代优化算法 (一):模拟退火算法 及应用举例
  13. 为什么有了哈希算法还需要一致性哈希?
  14. 12 如何用网格策略网住收益?——实操篇
  15. 复现文件上传漏洞(靶场练习)
  16. 了解第二部分多武装匪徒的强化学习手
  17. 视频教程-2019 react入门至高阶实战,含react hooks-ReactJS
  18. 国外问卷调查这个项目可以做吗?国外问卷调查怎么赚钱?
  19. Protocol Buffers和JSON相互转换
  20. 天天在做大数据,你的时间都花在哪了

热门文章

  1. 创业公司做数据分析(四)ELK日志系统
  2. 浏览器自动回显账户密码问题
  3. 国产数据库到底行不行?实测金仓KingbaseES两地三中心
  4. 魔力宝贝手游版服务器维护,9月18日《魔力宝贝》服务器更新维护公告
  5. 工作6年被裁员,所谓经验根本不值钱
  6. Hadoop 入门教程
  7. 让你爱不释手的5款电脑软件
  8. Visual Studio创建webapi示例
  9. 发送邮件自动保存到草稿箱
  10. C语言中的static的用法(超级详细)