PyTorch Lightning - LightningModule 训练逻辑 (training_step) 异常处理 try-except

news2024/12/26 0:17:13

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/133673820

LightningModule

在使用 LightningModule 框架训练模型时,因数据导致的训练错误,严重影响训练稳定性,因此需要使用 try-except 及时捕获错误。即 当错误发生时,在 training_step 异常返回 None,同时,on_before_zero_grad 也需要进行异常处理,处理 training_step 的异常返回 None。

同样的,validation_step 也可以这样处理。

源码如下:

class MyObject(pl.LightningModule):
	def __init__(self, config, args):
		# ...
		
	def training_step_wrapper(self, batch, batch_idx, log_interval=10):
		# train key process
		
	def training_step(self, batch, batch_idx, log_interval=10):
        """
        typically, each step costs 50 seconds
        参考: https://github.com/Lightning-AI/lightning/pull/3566
        """
        try:
            res = self.training_step_wrapper(batch, batch_idx, log_interval)
            return res
        except Exception as e:
            logger.info(f"[CL] training_step, exception: {e}")
            return None
            
	def on_before_zero_grad(self, *args, **kwargs):
        try:
            self.ema.update(self.model)
        except Exception as e:
            # 支持 training_step return None
            logger.info(f"[CL] on_before_zero_grad, exception: {e}")
            return
            
	def validation_step_wrapper(self, batch, batch_idx):
        # val key process

    def validation_step(self, batch, batch_idx):
        try:
            self.validation_step_wrapper(batch, batch_idx)
        except Exception as e:
            logger.info(f"[CL] validation_step, exception: {e}")
            return

常见错误如下

数组越界:

index 0 is out of bounds for dimension 0 with size 0

字典错误字段:

num_res = int(np_example["seq_length"])
KeyError: 'seq_length'

计算输入数值为空:

V, _, W = torch.linalg.svd(C)

free()异常:

free(): invalid next size (fast)

munmap_chunk() 空指针:

munmap_chunk(): invalid pointer

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消费者的力量:跨境电商如何满足新一代的需求

当代跨境电商行业正处于高速发展的阶段,而新一代消费者正在塑造这一行业的未来。他们的需求和消费行为发生了巨大变化,对于跨境电商来说,满足这一新一代消费者的需求至关重要。本文将探讨新一代消费者的需求以及跨境电商如何满足这些需求的方…

【Bond随你温故Azure Architecture】之HADR篇

上次复盘数据保护策略还是在《数据需要找回怎么办?我们如何选择正确的恢复/退回方式?》探讨了在application&DB层面上,不同level的数据保护有不同策略。而它也恰好是今天HA&DR版图的一角(RDBMS部分)&#xff0…

【机器学习】svm

参考 sklearn中SVC中的参数说明与常用函数_sklearn svc参数-CSDN博客https://blog.csdn.net/transformed/article/details/90437821 参考PYthon 教你怎么选择SVM的核函数kernel及案例分析_clfsvm.svc(kernel)-CSDN博客https://blog.csdn.net/c1z2w3456789/article/details/10…

【Python_PySide2学习笔记(十六)】多行文本框QPlainTextEdit类的的基本用法

多行文本框QPlainTextEdit类的的基本用法 前言正文1、创建多行文本框2、多行文本框获取文本3、多行文本框获取选中文本4、多行文本框设置提示5、多行文本框设置文本6、多行文本框在末尾添加文本7、多行文本框在光标处插入文本8、多行文本框清空文本9、多行文本框拷贝文本到剪贴…

什么是EJB以及和Spring Framework的区别

👔 前言 EJB,对于新生代程序员来说,是一个既熟悉又陌生的名词,EJB,大家都听说过,但是不一定都了解过,EJB是一种开发规范,而不是像Spring Framework一样是一个开源框架,E…

卫星/RedCap/高算力/解决方案/创新金奖……移远通信为IOTE 2023再添新活力

9月20日,IOTE 2023第二十届国际物联网展深圳场震撼来袭。 作为IOTE多年的“老朋友”,移远通信在参展当天,不仅有5G RedCap、卫星通信、高算力、车载等高性能产品及终端展出,还携智慧出行、智慧生活、智慧能源、工业互联网等多领域…

redis集群是符合cap中的ap还是cp

近期忽然间考虑到了这个问题。 cap 理论 cap是实现分布式系统的思想。 由3个元素组成。 Consistency(一致性) 在任何对等 server 上读取的数据都是最新版,不会读取出旧数据。比如 zookeeper 集群,从任何一台节点读取出来的数据…

SpringBoot 如何配置 OAuth2 认证

在Spring Boot中配置OAuth2认证 OAuth2是一种用于授权的开放标准,允许应用程序安全地访问用户的资源。Spring Boot提供了强大的支持,使得在应用程序中配置OAuth2认证变得非常容易。本文将介绍如何在Spring Boot中配置OAuth2认证,以便您可以在…

ThreeJS-3D教学六-物体位移旋转

之前文章其实也有涉及到这方面的内容,比如在ThreeJS-3D教学三:平移缩放物体沿轨迹运动这篇中,通过获取轨迹点物体动起来,其它几篇文章也有旋转的效果,本篇我们来详细看下,另外加了tween.js知识点&#xff0…

基于SpringBoot的靓车汽车销售网站

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 车辆展示管理 车辆品牌管理 用户交流管理 购物车 用户交流 我的订单管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的…

除静电离子风刀的工作原理及应用

除静电离子风刀是一种能够产生高速气流并带有离子的设备,主要用于去除物体表面的静电。它的工作原理是通过离子产生器产生大量负离子,并通过高压电场将离子加速,使其成为一股高速气流,从而将静电荷从物体表面中除去。 除静电离子…

阿里云 linux tomcat 无法访问方法

1、阿里云放行tomcat端口 例如7077端口号 2、linux 命令行防火墙 设置端口打开 以下命令查看是否开启指定端口 firewall-cmd --list-ports以下命令添加指定端口让防火墙放行 firewall-cmd --zonepublic --add-port3306/tcp --permanent以下命令重新启动防火墙 systemctl re…

聊一下读完“优势成长”这本书后感

(优势成长上) (优势成长下) 最近读完了一本个人觉得还可以的书,这本书是一位新东方老师,帅键翔老师写的 整本书概括起来,最重要一点就是找到自己的优势,然后利用自己的优势,去挖掘自己的潜力,发现新大陆 能适应时代变化的,是“新木桶原理”&a…

JAVA中解析package、import、class、this关键字

一、前言 代码写的多了有时候我们就慢慢忽视了最简单,最基本的东西。比如一个类中最常见出现的package、import、class、this关键字。我们平时很少追究它的含义或者从来不会深究为什么需要这些关键字。不需要这些关键字,又会怎样。这边博文就简单介绍一下…

设计模式 - 观察者模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 观察者模式属于行为型模式。在程序设计中,观察者模式通常由两个对象组成:观察者和被观察者。当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应&#xf…

攻防世界 Web_python_template_injection SSTI printer方法

这题挺简单的 就是记录一下不同方法的rce python_template_injection ssti了 {{.__class__.__mro__[2].__subclasses__()}} 然后用脚本跑可以知道是 71 {{.__class__.__mro__[2].__subclasses__()[71]}} 然后直接 init {{.__class__.__mro__[2].__subclasses__()[71].__i…

18373-2013 印制板用E玻璃纤维布 知识梳理

声明 本文是学习GB-T 18373-2013 印制板用E玻璃纤维布.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了印制板用E 玻璃纤维布的定义、代号与规格、要求、试验方法、检验规则、标志、包装、 运输和贮存。 本标准适用于以E 玻璃…

移远通信:探索智慧支付新方式,创新智慧金融新格局

回顾支付工具的演变历程,从刷卡支付到扫码支付,再到 “即拿即走”的自动支付模式创新,货币的电子化程度一直在层层深入。这其中,物联网技术的作用不可言喻。 当下,伴随着物联网行业自身的变革与创新,以连接…

MySql8.0 驱动编译和使用 - Qt mingw73_32

一、开发背景 现在已经有 MySql8.0.33 是 64 位的数据库,仅支持 64 位的程序,但是当前 Qt 程序编译环境是 mingw73_32,所以需要编译 32 位的 MySql 驱动库 二、开发环境 QtCreator4.8.2 Qt5.12.2 MySql8.0.33 三、实现步骤 1、下载 MySql…

halcon 算子set_display_font

set_display_font 算子:set_display_font( : : WindowHandle, Size, Font, Bold, Slant : ) 示例:set_display_font (200000, 24, ‘mono’, ‘true’, ‘false’) 200000(输入参数1):输入窗口句柄 24(…