RuntimeError: Expected to have finished reduction

这个问题是因为模型中定义了一堆函数,但是在loss.backward()后,模型中的某些函数跟loss计算无关。
1、可能出现的原因:

  1. 首先检查model 的forward前向过程,可能其中有些函数的计算结果没有参与到loss的计算部分。
  2. 如果是比较大的框架中,在其他py文件中可能定义了继承nn.module的类,此类中定义的函数也须参与进loss的计算,否则要注释掉。

2、有时候一眼找不到报错的信息问题出在哪儿,可以用以下简单方法:
from here
主要有两个:

  1. 在DistributedDataParallel中加入find_unused_parameters=True,
    如model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.local_rank], output_device=args.local_rank, find_unused_parameters=True)
    实际使用中,用这种方法会顺利跑通程序,不再报错,具体不知道怎么处理未参与loss计算的函数的。网上也有人说这种方法会带来额外的计算开销,而且会导致精度下降,具体没测试,不知道。
  2. 推荐用这种,即
    在这里插入图片描述
    把上面的代码加入到loss.backward()后,loss.step()之前,很方便打印出来哪些网络层出问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336179.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JPackage指令将可执行Jar包打包成EXE运行程序

jpackage是jdk14正式加入的一个用于独立打包的工具。 官网简介翻译: jpackage工具将以Java应用程序和Java运行时映像作为输入,并生成一个包含所有必要依赖项的Java应用程序映像。它可以生成特定于平台格式的本机软件包,例如Windows上的exe或…

Yolov5双目测距-双目相机计数及测距教程(含代码)

Yolov5双目测距是一种基于深度学习模型的双目相机计数及测距方法,它可以用于在不同场景下进行物体检测、识别和测距。 以下是 Yolov5双目测距的主要特点和步骤: 1. 双目相机: Yolov5双目测距需要使用一对双目相机来获取场景中的图像数据。…

【排序算法】一、排序概念和直接插入排序(C/C++)

「前言」文章内容是排序算法之直接插入排序的讲解。(所有文章已经分类好,放心食用) 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、排序概念的介绍二、直接插入排序2.1 原理2.2 代码实现(C/C&#xf…

VM虚拟机的ip突然不见了——吐血解决分享,同秃然的

问题:再虚拟机上不管是输入 ip a,还是ifconfig,还是ip addr,还是root都是一个效果,只有主机的IP,虚拟机的IP不见了 网上好多方法是改ens33文件的,可是我的打开之后是空白的,根本就没有东西,和我…

【小工具】pixi-live2d-display,直接可用的live2d的交互网页/桌面应用

效果&#xff1a; <script src"https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js"></script> <script src"https://cdn.jsdelivr.net/gh/dylanNew/live2d/webgl/Live2D/lib/live2d.min.js"></script> <…

【数字图像处理】水平翻转、垂直翻转

图像翻转是常见的数字图像处理方式&#xff0c;分为水平翻转和垂直翻转。本文主要介绍 FPGA 实现图像翻转的基本思路&#xff0c;以及使用紫光同创 PGL22G 开发板实现数字图像水平翻转、垂直翻转的过程。 目录 1 水平翻转与垂直翻转 2 FPGA 布署与实现 2.1 功能与指标定义 …

Flink构造宽表实时入库案例介绍

1. 安装包准备 Flink 1.15.4 安装包 Flink cdc的mysql连接器 Flink sql的sdb连接器 MySQL驱动 SDB驱动 Flink jdbc的mysql连接器 2. 入库流程图 3. Flink安装部署 上传Flink压缩包到服务器&#xff0c;并解压 tar -zxvf flink-1.14.5-bin-scala_2.11.tgz -C /opt/ 复…

基于python热门旅游景点推荐系统+爬虫技术

大数据分析&#xff0c;数据可视化等皆可用。 源码分享。

esp32UART串口外设(Arduino)

通用异步接收器/发送器 &#xff08;UART&#xff09; 介绍 通用异步接收器/发送器 &#xff08;UART&#xff09; 是一种硬件功能&#xff0c;它使用广泛采用的异步串行通信接口&#xff08;如 RS232、RS422 和 RS485&#xff09;处理通信&#xff08;即时序要求和数据成帧&…

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆

系列文章目录 前言 一、导言 本章的目标并不高&#xff0c;我们只想了解钟摆的动力学原理。 为什么是摆呢&#xff1f;部分原因是&#xff0c;我们大多数多连杆机器人操纵器的动力学都是大量耦合摆的动力学。此外&#xff0c;单摆的动力学原理非常丰富&#xff0c;足以引入我…

JVM主要的几种垃圾回收算法

1、Java 为什么要实现自动内存管理 &#xff1f; 简化开发过程&#xff1a;通过内存自动管理可以避免手动分配和释放内存的麻烦&#xff0c;减少了内存泄漏和内存错误的风险&#xff0c;让研发能更专注于业务逻辑&#xff0c;不必纠结于内存管理的细节。 提高开发效率&#xff…

【Python程序开发系列】一文总结API的基本概念、功能分类、认证方式、使用方法和开发流程

这是Python程序开发系列原创文章&#xff0c;我的第195篇原创文章。 一、什么是API&#xff1f; API是软件开发中非常重要的概念&#xff0c;它简化了不同组件之间的交互和集成&#xff0c;提供了对其他软件或服务功能的访问和调用方式。 API是应用程序编程接口&#xff08;Ap…