1. 网络结构 注: (1)图中的输出缺少一个 batch-size 的维度,例如 yolo1 的实际输出是 [bs, 3, 13, 13, 85] (2)yolo 层的功能:yolo 层在 forward 时仅调整了输入特征的结构,并没有变动数值 (3)yolo 层的输出:3 代表 anchor 数量;13*13 代表图像划分的网格;85 代表网络预测 [x, y, w, h, obj, cls            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-13 20:17:57
                            
                                0阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 监测 PyTorch 中的 Loss 梯度
在深度学习的训练过程中,监测 Loss 的梯度变化是非常重要的。它可以帮助我们了解模型训练的有效性,是否需要进行调优,或者是模型是否可能出现了过拟合。本文将带你一步一步实现这个功能,并用代码加以实例说明。
## 一、实现流程概述
我们可以将监测 Loss 梯度的整个流程分为以下几个步骤:
```mermaid
flowchart TD            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-15 06:19:09
                            
                                355阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在上一篇文章 中,我们自己手动实现了对于softmax操作和交叉熵的计算,可其实这些在Pytorch框架中已经被实现了,我们直接拿来使用即可。但是,为了能够对这些内容有着更深刻的理解,通常我们都会自己手动实现一次,然后在今后的使用中就可以直接拿现成的来用了。在接下来这篇文章中,笔者将首先介绍如何调用Pytorch中的交叉熵损失函数,然后再同时借助nn.Linear()来实现一个简洁版的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-25 12:27:11
                            
                                156阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            本文作者:Allen 在该系列的上一篇,我们介绍了使用Pytorch的重要知识点:计算图和自动求导。本篇我们继续学习计算图和自动求导。首先,我们在上一节的计算图上增加复杂度,例如变成这样的计算图:图中为了绘制方便,把张量w和x绘制在一个框中了。其对应的计算图代码如下:import torchw = torch.tensor([1.],requires_grad=True)x = t            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-11 22:31:15
                            
                                72阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在Pytorch中,传入网络中计算的数据类型必须是Tensor类型,如果requires_grad = True的话,就会保存着梯度和创建这个Tensor的function的引用,换句话说,就是记录网络每层的梯度和网络图,可以实现梯度的反向传播,网络图可以表示如下(来自Deep Learning with PyTorch: A 60 Minute Blitz): 则根据最后得到的loss可以逐步递            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-08 10:48:34
                            
                                130阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在实际的神经网络搭建过程中,前向传播是比较容易实现的,正确性较高;而反向传播的实现是有一定难度的,时常会出现bug。对于准确性要求很高的项目,梯度检验尤为重要。梯度检验的原理数学中对导数(梯度)的定义是 我们需要验证反向传播计算得到的是否准确,就可以用另一种方式,即上述的公式,利用前向传播分别计算出和来求得,验证它是否与反向传播计算得到的一样。梯度检验的Python实现我们简单构建一个3层神经网络            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-26 12:08:08
                            
                                56阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            梯度下降法的原理和公式这里不讲,就是一个直观的、易于理解的简单例子。1.最简单的情况,样本只有一个变量,即简单的(x,y)。多变量的则可为使用体重或身高判断男女(这是假设,并不严谨),则变量有两个,一个是体重,一个是身高,则可表示为(x1,x2,y),即一个目标值有两个属性。2.单个变量的情况最简单的就是,函数hk(x)=k*x这条直线(注意:这里k也是变化的,我们的目的就是求一个最优的 &nbs            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-12 20:18:51
                            
                                36阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目录         梯度下降算法 代码1实现: 画出关系图随机梯度下降(Stochastic Gradient Descent)代码2实现:(与上面类似)上一次我们画出上面线性图所用的数据使用穷举法所求得的,但同时方法也存在弊端:        当权重w只有一个时,还能简单的用            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-20 12:07:57
                            
                                58阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # PyTorch中的Loss及梯度的理论理解
在深度学习中,理解损失函数(Loss)及梯度(Gradient)的概念是训练模型的基础。本文旨在帮助刚入行的小白开发者掌握这一理论知识并实现基本的PyTorch代码。下面我们将详细介绍其流程和实现。
## 整体流程
我们可以将PyTorch中使用Loss和计算梯度的过程概述为以下几个步骤:
| 步骤      | 描述            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-31 08:19:13
                            
                                267阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一:pytorch.nn常用知识整理构建神经网络1.激活函数(1)softmax函数: 将多个神经元的输出,映射到(0,1)区间内; 很多时候,Sigmoid 作为最后一层的激活函数与交叉嫡代价函数组合; 如果需要将输出解释为概率分布,一般建议用softmax激活函数。 (2)ReLU激活函数:计算量小 一定程度上缓解“梯度消失”问题 使部分神经元的输出为零,一定程度            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-14 19:32:32
                            
                                81阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            参考: https://yjango.gitbooks.io/superorganism/content/ti_du_xia_jiang_xun_lian_fa.htmlhttps://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650720663&idx=3&sn=d9f671f77be23a148d1830448154a            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-21 10:53:10
                            
                                58阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            对于二分类问题,使用softmax或者sigmoid,在实验结果上到底有没有区别(知乎上相关问题讨论还不少)。最近做的相关项目也用到了这一块,从结果上来说应该是没什么区别,但是在模型上还是存在一定差异性的(可以应用于多模型融合、在相关比赛项目当中还是可以使用的)。相关知识和代码总结如下。以下主要分为4个部分:交叉熵损失、二分类交叉熵损失、Focal loss及二分类Focal loss1. CE_            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-10 18:56:36
                            
                                154阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            背景最近一直在总结Pytorch中Loss的各种用法,交叉熵是深度学习中最常用的计算方法,写这个稿子把交叉熵的来龙去脉做一个总结。什么是交叉熵信息量引用百度百科中信息量的例子来看,在日常生活中,极少发生的事件一旦发生是容易引起人们关注的,而司空见惯的事不会引起注意,也就是说,极少见的事件所带来的信息量多。如果用统计学的术语来描述,就是出现概率小的事件信息量多。因此,事件出现得概率越小,信息量愈大。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-21 19:26:25
                            
                                57阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            对于loss的定义和选择,是决定一个模型能否收敛甚至是针对特定问题是否能够进行灵活应用的基石,因而对于loss的理解和把握是炼丹师的基本数学修养。从pytorch的loss的使用来看,是对于loss的理解的一个很好的入口。 对于Loss的理解应该是无止境的,有如下的一些比较高阶的理解:L1 loss,L2 loss 和 smoothL1loss对于L1 loss,L2 loss 和 sm            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-05 21:19:54
                            
                                78阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            pytorch 常用loss函数1.L1 Loss/平均绝对误差(MAE)1.1 L1 Loss/平均绝对误差(MAE)简介1.2 编程实现2. L2 Loss/均方误差(MSE)2.1 L2 Loss/均方误差(MSE)简介2.2 编程实现3. SmoothL1 Loss3.1 SmoothL1 Loss简介3.2 编程实现4. BCELoss和BCEWithLogitsLoss4.1 BCE            
                
         
            
            
            
            PyTorch中的梯度累加使用PyTorch实现梯度累加变相扩大batch这种模式可以让梯度玩出更多花样,比如说梯度累加(gradient accumulation)传统的训练函数,一个batch是这么训练的:for i,(images,target) in enumerate(train_loader):
    # 1. input output
    images = images.cud            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-08 10:52:27
                            
                                124阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            损失函数一句话:损失函数就是计算预测值和真实值之间的误差。损失函数可以分为以下三类:回归损失函数:应用于预测连续的值,如房价,年龄等分类损失函数:用于离散的值,图像分类,图像分割等排序损失函数:用于预测输入数据之间的相对距离下面逐一介绍损失函数L1 loss   L1 loss 也称为平均绝对误差(Mean Absolute Error),简称MAE,计算真实值和预测值之间绝对差之和的平均值。 应            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-08 23:10:36
                            
                                523阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录triplet losstriplet hard loss triplet loss官方文档:torch.nn — PyTorch master documentation关于三元损失,出自论文:FaceNet: A Unified Embedding for Face Recognition and Clustering三元损失的介绍很多看下图:训练集中随机选取一个样本:Anchor(            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-05 10:09:39
                            
                                399阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前言交叉熵损失本质是衡量模型预测的概率分布与实际概率分布的差异程度,其值越小,表明模型的预测结果与实际结果越接近,模型效果越好。熵的概念来自与信息论,参考资料1对交叉熵的概念做了简明的介绍,很好理解。需要注意: Pytorch中的CrossEntropyLoss是LogSoftMax与NLLLoss的结合,下面以实例逐步拆解CrossEntropyLoss的计算过程。LogSoftMax当网络最后            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-11 21:23:36
                            
                                171阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在构建loss时pytorch常用的包中有最常见的MSE、cross entropy(logsoftmax+NLLLoss)、KL散度Loss、BCE、HingeLoss等等,详见:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/#loss-functions这里主要讲解一种考虑类间距离的Center            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-06 09:58:54
                            
                                217阅读
                            
                                                                             
                 
                
                                
                    