PyTorch学习笔记(三)参数初始化与各种Norm层

Pytorch网络参数初始化方法总结torch.nn.init Pytorch网络参数初始化方法总结均匀分布初始化torch.nn.init.uniform_()正态分布初始化torch.nn.init.normal_()常量初始化torch.nn.init.constant_()Xavier初始化Xavier均匀分布初始化torch.nn.init.xavier_uniform_()Xavier正态分布初始化torch.nn.init.xavier_normal_()kaiming初始化kaiming均匀分布初始化torch.nn.init.kaiming_unifo 阅读详情

Environment

  • OS: macOS Mojave
  • Python version: 3.7
  • PyTorch version: 1.4.0
  • IDE: PyCharm


0. 写在前面

数据在神经网络模型的层与层之间传播,数据过大或或小都会使训练遇上麻烦。合理的参数初始化和 Normalization 能够使模型中数据分布合理,让训练能够顺利地进行。

1. 初始化

PyTorch 中的 torch.nn.init 模块提供了十种初始化的方式,这里简单记录一下。

为改善梯度消失和爆炸的问题,需要保证神经网络中数据分布在合适的范围,这就是方差一致性。经典的 Xavier 和 kaiming 初始化都是从这个原则得来。

对于两个独立随机变量,它们乘积的方差为

D ( X Y ) = 方 差 的 定 义 E [ ( X Y − E ( X Y ) ) 2 ]   = E [ X 2 Y 2 − 2 X Y E ( X Y ) + E 2 ( X Y ) ]   = 期 望 的 线 性 性 质 E ( X 2 Y 2 ) − 2 E 2 ( X Y ) + E 2 ( X Y ) = E ( X 2 Y 2 ) − E 2 ( X Y ) D(XY) \overset{方差的定义}= E[(XY - E(XY))^2] \\ \ \\ = E[X^2 Y^2 - 2XY E(XY) + E^2(XY)] \\ \ \\ \overset{期望的线性性质}= E(X^2 Y^2) - 2E^2(XY) + E^2(XY) = E(X^2 Y^2) - E^2(XY) D(XY)=方差的定义E[(XY−E(XY))2] =E[X2Y2−2XYE(XY)+E2(XY)] =期望的线性性质E(X2Y2)−2E2(XY)+E2(XY)=E(X2Y2)−E2(XY)
因为,当 X, Y 相互独立时
E ( X Y ) = E ( X ) E ( Y ) , E ( X 2 Y 2 ) = E ( X 2 ) E ( Y 2 ) E(XY) = E(X) E(Y), E(X^2 Y^2) = E(X^2) E(Y^2) E(XY)=E(X)E(Y),E(X2Y2)=E(X2)E(Y2)
所以,
D ( X Y ) = E ( X 2 ) E ( Y 2 ) − [ E ( X ) E ( Y ) ] 2 D(XY) = E(X^2) E(Y^2) - [E(X)E(Y)]^2 D(XY)=E(X2)E(Y2)−[E(X)E(Y)]2
又因
E ( X 2 ) = D ( X ) + E 2 ( X ) , E ( Y 2 ) = D ( Y ) + E 2 ( Y ) E(X^2) = D(X) + E^2(X), E(Y^2) = D(Y) + E^2(Y) E(X2)=D(X)+E2(X),E(Y2)=D(Y)+E2(Y)
进一步转化
D ( X Y ) = [ D ( X ) + E 2 ( X ) ] [ D ( Y ) + E 2 ( Y ) ] − [ E ( X ) E ( Y ) ] 2   = D ( X ) D ( Y ) + D ( X ) E 2 ( Y ) + D ( Y ) E 2 ( X ) D(XY) = [D(X) + E^2(X)][D(Y) + E^2(Y)] - [E(X)E(Y)]^2 \\ \ \\ = D(X)D(Y) + D(X)E^2(Y) + D(Y)E^2(X) D(XY)=[D(X)+E2(X)][D(Y)+E2(Y)]−[E(X)E(Y)]2 =

【PyTorch】深入解析weight_norm与spectral_norm:原理、实现与实战对比 本文深入解析PyTorch中的weight_norm与spectral_norm技术,详细讲解其原理、实现方法及实战对比。weight_norm通过分解权重为大小和方向提升训练稳定性,而spectral_norm则通过限制权重矩阵的谱范数防止模型过激反应。文章包含代码示例、性能对比及混合使用方案,帮助开发者高效应用这两种归一化技术。 阅读详情

相关推荐

L2Norm 的实现

L2 范数归一化(L2 Normalization)是将每个样本(向量)除以其 L2 范数,以使得每个样本的 L2 范数为 1, 这样做可以使得样本在欧几里得空间中位于单元圆上。L2范数(L2 norm),也称为欧几里德范数(Euclidean norm)或2-范数,是向量元素的平方和的平方根。而 L2 范数归一化就是将向量。

言午日月 2252

PyTorch实战:weight_norm与spectral_norm在GAN训练中的对比应用

本文深入探讨了PyTorch中weight_norm与spectral_norm在GAN训练中的对比应用,通过实验分析两种规范化方法对模型稳定性和生成质量的影响。spectral_norm在训练稳定性和生成多样性方面表现更优,而weight_norm则在训练速度上具有优势。文章提供了详细的代码示例和调优策略,帮助开发者在不同场景下做出合理选择。

weixin_29048775的博客 98

大模型训练中Pre-Norm与Post-Norm技术对比与应用

层归一化(Layer Normalization)是Transformer架构中的核心组件,通过标准化神经网络层的输入分布来提升训练稳定性。其技术原理是在每个子层(自注意力/前馈网络)前后进行特征缩放,解决深度网络中的梯度消失/爆炸问题。在工程实践中,Pre-Norm将归一化置于残差连接前,显著改善GPT等大模型的训练效率;而Post-Norm遵循原始Transformer设计,被T5等模型验证能获得更优性能。当前主流大模型如LLaMA-2通过改进的Pre-Norm结构,结合RMSNorm和旋转位置编码等创

weixin_34405354的博客 350

PyTorch实战:5分钟搞定L2Norm归一化层实现(附完整代码)

本文详细介绍了如何在PyTorch中快速实现L2Norm归一化层。通过清晰的代码示例,从核心原理、类设计、前向传播到模型集成,手把手教你构建一个稳健且可复用的L2Norm层,并应用于目标检测等场景,有效提升模型训练稳定性与泛化能力。

weixin_28235513的博客 445

别再乱用了!PyTorch中F.layer_norm和nn.LayerNorm的5个关键区别与实战选择

本文深入解析PyTorch中F.layer_norm与nn.LayerNorm的5个关键区别,包括参数管理、计算图构建和变长序列处理等核心差异。通过实战案例和性能对比,帮助开发者在Transformer、RNN等模型中选择合适的LayerNorm实现,提升模型训练效率和工程化水平。

weixin_28701593的博客 354

深入理解L2Norm:从数学原理到PyTorch实现

本文深入解析了L2范数(L2Norm)的核心概念,从欧几里得距离的直观理解,到数学公式推导及数值稳定性处理。重点阐述了L2归一化如何将向量缩放为单位向量以保留方向信息,并详细提供了在PyTorch中实现可学习缩放因子的L2Norm层的完整代码与实战指南,适用于特征嵌入、目标检测等深度学习任务。

weixin_29046035的博客 189

5分钟上手,Cursor + IntelliJ IDEA 双端开发:高效协同的终极方案

最好的工具,是让你忘记工具的存在。通过AI 的创造力(Cursor)IDE 的工程力(IDEA)无缝的上下文流转(插件协同)从此,不再手忙脚乱切窗口,不再迷失在文件树中。只需一个快捷键,专注编码本身。装上这两个插件后,日常开发体验虽然没有天翻地覆的变化, 但至少摸鱼的几个小时时间是有的!

weixin_44058951的博客 2198

NVIDIA Isaac平台体验:Isaac Sim与Isaac ROS的快速了解

NVIDIA Isaac平台是一个专为机器人和人工智能(AI)打造的加速平台,旨在为开发者提供一个全面的工具集,以加速机器人相关应用的开发和部署。材质定义语言(MDL)是一种用于描述材质属性和行为的编程语言,能够精确地定义材质的光学特性和物理属性。NVIDIA Isaac Sim 通过支持 MDL,进一步提升了仿真环境中材质的真实感和细节表现。精确的材质定义:MDL 允许开发者精确地定义材质的光学特性和物理属性,如反射率、折射率、粗糙度和透明度等。这使得仿真环境中的物体看起来更加真实和自然。动态材质。

全世界的博客 4万+

随机子空间集成方法原理与scikit-learn实践

集成学习通过组合多个基学习器的预测结果来提升模型性能,是机器学习中的核心方法之一。随机子空间方法作为集成学习的重要变体,其核心原理是通过对特征空间进行随机子采样来增加模型多样性。这种方法特别适合处理高维数据,能有效缓解维度灾难问题,常与决策树、K近邻等对特征选择敏感的基学习器配合使用。在scikit-learn中,可以通过BaggingClassifier和BaggingRegressor实现随机子空间集成,关键参数包括max_features和n_estimators。实际应用中,该方法在金融风控、医疗诊

weixin_33773084的博客 377

代码详解——Transformer

对于一个序列,在 time_step 为 t 的时刻,我们的解码输出应该只能依赖于 t 时刻之前的输出,而不能依赖 t 之后的输出。当 Decoder 的输入矩阵和 Mask 矩阵输入矩阵包含 “ I have a cat” (0, 1, 2, 3, 4) 五个单词的表示向量,Mask 是一个 5×5 的矩阵。然后判断是否传入的mask, 如果有mask (mask参数值不为None),则把mask为0的位置,将对应位置的attn的值设为无穷小的负数。可以发现得到的输出和输入的K,Q,V的大小相同。

zyw2002的博客 7210

YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将

Limiiiing的博客 1015

PCL点云算法与项目实战案例汇总(长期更新)

本专栏将深入探讨PCL(点云库)的基础算法,旨在帮助读者掌握点云处理的核心技术。内容涵盖点云的采样、过滤、配准、分割等基础操作,并结合实际案例,展示这些算法在工程中的应用。无论你是初学者还是有一定经验的开发者,都能通过本专栏加深对PCL的理解,提升在三维数据处理领域的技能。

纵马踏花向自由 3002

《YOLO26/YOLO11/YOLOv8改进与系统实战》,改进与系统实战专栏目录和介绍

YOLOv8 是目前比较火和比较成熟的深度学习框架,是2023年1月发布的,由 Ultralytics 团队开发。Ultralytics自YOLOv5 开始一直积极维护和更新 YOLO 框架,因此 YOLOv8 也享有持续的维护与升级支持。因此我写下《手把手教你YOLOv8实战》专栏,专门为那些对计算机视觉、深度学习、以及目标检测技术感兴趣的读者设计。通过本专栏,你将深入理解 YOLOv8 的核心原理与实际应用,从0 开始学习并掌握如何使用 YOLOv8 完成各类目标检测任务,帮助你快速上手并掌握 YOLO

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

PyTorch深度学习实战(7)——批大小对神经网络训练的影响

在神经网络中,批( batch )是指一次输入网络进行训练或推断的一组样本。批处理( batch processing )是指将这一组样本同时输入网络进行计算的操作。本节中首先介绍批( Batch )的基本概念,并且介绍批大小在神经网络训练过程中的影响。

盼小辉丶的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: PyTorch学习笔记(三)卷积池化线性激活和Dropout层
下一篇: PyTorch学习笔记(三)构建卷积神经网络模型
longrootchen
博客等级 码龄7年 19粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值