• 错误信息
  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相关推荐

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

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

  3. grad can be implicitly created only for scalar outputs

    1.Autograd:自动求导 ​ torch.Tensor 是这个包的核心类.如果设置它的属性 .requires_grad 为 True,那么它将会追踪对于该张量的所有操作.当完成计算后可以通过调 ...

  4. DEBUG:grad can be implicitly created only for scalar outputs

    DEBUG:grad can be implicitly created only for scalar outputs 解决: 添加 retain_graph=True 只能起效一次

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

    背景 博主第一次使用多卡训练,在程序中添加了如下代码 # 包装为并行风格模型 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID& ...

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

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

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

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

  8. 高效理解pytorch的backward需要scalar outputs

    利用backward时 , 可能经常遇到错误 RuntimeError: grad can be implicitly created only for scalar outputs 理解的最好方式就 ...

  9. PyTorch grad 与 Optimizer(params) 区别

    目录 PyTorch grad 与 Optimizer(params) 区别 PyTorch grad 与 Optimizer(params) 区别 Tensor 可以设置属性 requires_gr ...

最新文章

  1. 生物信息「知识图谱」
  2. thinkphp学习笔记13-15集
  3. 技能UP:SAP CO掌上配置手册
  4. java string转number_Java 序列化
  5. P1306-斐波那契公约数【矩阵乘法,数论】
  6. 【JSON系列】JSON核心知识点总结
  7. Git笔记(4) 获取仓库
  8. 阿里云终端连接与实例管理
  9. DAO层、ENTITY层、SERVICE层、CONTROLLER层
  10. 1909升级卡64_【春节配置推荐】第3期:设计娱乐万元配置推荐、四代升级建议参考...
  11. 写小说的人是不是都很聪明呢?
  12. hue访问mysql,【原创】大叔经验分享(50)hue访问mysql(librdbms)
  13. mysql web聊天_多嘴WEB聊天室基于PHP+MYSQL的中文聊天室
  14. Latex 带圈数字
  15. 《互联网信息资源检索与利用》读书笔记
  16. 计算机系学霸情书表白,大学生情书:各专业学霸的表白让人大开眼界,网友:果然要多读书...
  17. win下brat安装与使用
  18. Ubuntu 16.04安装Matlab R2016b
  19. 什么是前端、什么是后端
  20. 【征稿】第三届电子、信息与计算技术前沿国际会议(ICFEICT 2023)

热门文章

  1. 解决Hadoop运行时遇到java.io.FileNotFoundException错误
  2. 入门级对数几率回归算法
  3. linux-httpd
  4. 胡图图想学c语言5之考点
  5. Python:星期一
  6. Vue整合ECharts
  7. mysql执行非查询语句_iBatis执行非查询语句(CRUD,函数和过程)
  8. C++ 面向对象的日历(万年历)
  9. 基于bootstrap框架的bootstrap-table表格使用
  10. 记一次linux 如何更改网卡的顺序