代码踩坑记录说明踩坑记录使用 enumerate 遍历 Pytorch Dataset 实例Python 多线程 multiprocessing.Pool(jobs).imap(...) 有bug损失函数出现 nan.需要梯度更新的变量被更改了 2022.04.14待续... 说明本文记录本人在代码编写过程中遇到的种种bug。踩坑记录使用 enumerate 遍历 Pytorch Dataset            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-07 09:04:47
                            
                                124阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            损失出现NaN可能有三种情况: 计算过程中出现除数为0的情况,这种情况可以进行平滑处理,如果是计算书写错误就相应更改即可; 计算过程中带入空数据,如一个空张量,后续计算会出现NaN,而且这时梯度可能会正常更新,直到多次累积后出现爆炸的情况; 数值精度溢出,如fp16精度不够表示的数值,溢出后就表示为            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-06-12 00:33:12
                            
                                728阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 当 PyTorch 数据出现 NaN:原因与解决方法
在机器学习和深度学习的过程中,使用 PyTorch 作为框架时,有时我们会遇到数据出现 NaN(Not a Number)的情况。这种情况可能导致模型训练失败,并且难以调试。本文将探讨导致 NaN 的常见原因、如何监测和解决这些问题,并提供相应的代码示例。
## NaN 的常见原因
1. **学习率过大**:高学习率会导致模型参数剧烈            
                
         
            
            
            
            ## PyTorch Loss出现NaN的解决方案
在深度学习开发过程中,使用PyTorch时可能会遇到损失函数(loss)出现NaN的问题。这会导致训练失败。本文将教会你如何解决这个问题,从流程入手,逐步分析每一步需要实施的代码。
### 处理流程
以下是处理损失出现NaN问题的流程:
```mermaid
flowchart TD
    A[开始] --> B[数据准备]
    B            
                
         
            
            
            
            # PyTorch CrossEntropy出现NaN的原因及解决方法
在深度学习的训练过程中,我们常常会遇到训练损失出现NaN(Not a Number)的情况。特别是在使用PyTorch框架中的`CrossEntropyLoss`时,NaN现象尤为明显。本文将探讨引起这一问题的常见原因,并提供相关解决方案和示例代码。
## 一、问题分析
`CrossEntropyLoss`是在多分类问题            
                
         
            
            
            
            # 如何解决PyTorch中Loss出现NaN的问题
在使用PyTorch进行深度学习模型训练时,很多开发者可能会遇到Loss值变为NaN(Not a Number)的情况。NaN的出现可能是由于多种原因导致的。接下来,我将指导你一步一步找到并解决问题。
## 整体流程
我们可以将排查NaN的过程分为以下几个步骤:
| 步骤         | 描述            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-09-25 05:45:40
                            
                                297阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本学习笔记基于 Dive-into-DL-PytorchTensor是pytorch中所应用的一种数据结构,torch.Tensor是存储和变换数据的主要工具。1.1.1 创建Tensor创建Tensorimport torch #导入Pytorch
x= torch.empty(5,3) #创建一个5*3的随机Tensor
print(x)输出:tensor([[1.0102e-38, 1.0            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-26 20:21:11
                            
                                131阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # PyTorch Batch Normalization 实战指南
在深度学习中,Batch Normalization(批量归一化)是一个非常重要的技术,它可以加速模型的收敛,并提高模型的稳定性。本篇文章旨在帮助刚入行的小白,了解如何在PyTorch中实现Batch Normalization。我们将通过一系列步骤来完成这一目标。
## 实现流程
在开始实现Batch Normaliza            
                
         
            
            
            
            1 Module类的使用方法1.1 Module类的add_module()方法1.1.1 概述add_module():将XX层插入到模型结构中1.1.2 add_module()----LogicNet_fun.py(第1部分)import torch.nn as nn
import torch
import numpy as np
import matplotlib.pyplot as pl            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-29 21:01:42
                            
                                31阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在使用 PyTorch 进行深度学习模型训练时,有时会遇到“如何关闭 BatchNorm”这一问题。BatchNorm 作为一种标准化技术,对于加速训练和稳定模型性能具有重要作用,但在某些情况下,我们可能需要将其关闭。本文将详细阐述如何解决“PyTorch 关闭 BatchNorm”问题,并提供环境准备、集成步骤、配置详解等细节。
## 环境准备
在开始之前,我们需要确保环境已经准备就绪,包括            
                
         
            
            
            
            在深度学习的实践中,批量归一化(Batch Normalization)是一项重要技术,有助于提高模型的收敛速度和稳定性。然而,在使用 PyTorch 框架进行模型构建时,许多开发者面临了如何恰当地添加 BatchNorm 的挑战。本文将详细阐述这一过程,涵盖背景定位、参数解析、调试步骤、性能调优、排错指南及最佳实践。
### 背景定位
在许多深度学习应用中,Batch Normalizati            
                
         
            
            
            
            1.背景介绍在深度学习领域,模型可视化是一个重要的研究方向,它可以帮助我们更好地理解模型的结构、特征和性能。PyTorch是一个流行的深度学习框架,它提供了一系列的可视化工具来帮助我们更好地理解模型。在本文中,我们将深入了解PyTorch的模型可视化,包括其核心概念、算法原理、最佳实践、应用场景和工具推荐。1. 背景介绍模型可视化是一种将模型的信息以图形、表格或其他可视化方式呈现的方法。在深度学习            
                
         
            
            
            
            先上结论:parameter在反向传播会被optimizer.step更新,buffer在反向传播不会被更新parameter和buffer都被保存在model.state_dict()返回的OrderedDict中(这也是模型保存的对象)模型进行设备移动时,模型中注册的参数(parameter和buffer),即model.state_dict()中的内容会同时进行移动咱来解释一下! 文章目录先            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-04 14:06:44
                            
                                106阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            PyTorch学习笔记7—损失函数、梯度下降1 损失函数(Loss Function)1.1 nn.L1Loss:1.2 nn.NLLLoss:1.3 nn.MSELoss:1.4 nn.CrossEntropyLoss:1.5 nn.BCELoss:2 梯度下降2.1 梯度2.2 梯度下降法直观解释2.3 Mini-batch的梯度下降法2.4 torch.optim2.4.1 torch.o            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-11 22:22:54
                            
                                93阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、背景因为最近在搞毕设,借用交友网站上的yolov5开源代码训练自己的数据集时,第一个epoch就显示各个loss=nan。而后,近乎绝望的我找到一个玩计算机视觉玩得不错的UP主,一次调试100元, 我欣然同意了,花钱消灾!今天上午9点约好,他控制我;在20分钟内,他新建了一个虚拟环境,把pytorch由原先的1.9版本重装成1.8版本(仍是GPU类型),接着把其他依赖库安装完后,叫我run一下            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-20 10:33:35
                            
                                147阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 模型的两种参数在 Pytorch 中一种模型保存和加载的方式如下: #save
torch.save(net.state_dict(),PATH)
#load
model=MyModel(*args,**kwargs)
model.load_state_dict(torch.load(PATH))
model.eval模型保存的是 net.state_dict()net.state            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-04 14:06:37
                            
                                145阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # PyTorch中的Batch Normalization及其参数获取
在深度学习模型训练中,Batch Normalization(批量归一化)是常用的技术之一。它通过对每一批输入数据进行标准化处理,提高了模型的收敛速度并提高了性能。本文将介绍Batch Normalization的基本原理、在PyTorch中的实现,并展示如何获取其参数。
## 什么是Batch Normalizatio            
                
         
            
            
            
            https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/#normalization-layers-source 基本原理对小批量(mini-batch)3d数据组成的4d[batch_size,num_features,height,width]输入进行批标准化(Batch Normalization)操作            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-26 17:05:35
                            
                                91阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            pytorch BatchNorm 实验百度了一圈,也没有找到pytorch BatchNorm详细解释能让自己十分明白的,没办法自己做一下实验记录下吧,然后结合百度的进行理解BatchNorm2d一般用于一次前向运算的batch size比较多的情况(100~200) , 但是当batch size较小时(小于16时),效果会变差,这时使用group norm可能得到的效果会更好它的公式可以表示            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-03 13:28:17
                            
                                55阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # PyTorch 半精度训练中的 NaN 问题解决指南
随着深度学习的快速发展,越来越多的研究者和工程师开始使用半精度(FP16)训练来提高计算效率和减少内存使用。然而,半精度训练有时会出现 NaN(Not a Number)现象,这对模型的训练和性能来说是一个严重的问题。本文将指导你如何应对这一困扰,通过一系列的步骤来排查问题并解决它们。
## 整体流程
首先,我们将整个解决 NaN 问