pytorch-Normalization

目录

  • 1. 为什么Normalization
  • 2. Normalization
    • 2.1 image Normalization
    • 2.2 Batch Normalization
  • 3. Normalization pytorch实现
    • 3.1 Normalization标准公式
    • 3.2 2d normalization
    • 3.3 normalize test
  • 4. 使用normalization的好处

1. 为什么Normalization

下图使用sigmoid激活函数,该激活函数在超出一定范围的时候,梯度就变成了0,会出现梯度弥散的现象,因此不推荐使用sigmoid,但是某些情况下又不得不使用。
normalization是将输入转换为以0为均值以σ为方差的范围内,使得输入变成在0附近以很小的幅度变化,方便下一层进行优化。
在这里插入图片描述
在看下一幅图,其中前半部分x1和x2的值范围相差较大,在计算loss的时候,找到最优解会曲折一些,而后半部分x1和x2的值的范围相差不大,在计算loss的时候,找到最优解就会比较直接,更快一些。
因此使用normalization将输入转换的一个区间,有助于loss尽快找到最优解。
在这里插入图片描述

2. Normalization

2.1 image Normalization

在这里插入图片描述

2.2 Batch Normalization

Normalization有下图几种,这里只说Batch Normalization
假设H和W都说28,有3个通道和6个batch,那么就分别计算当前batch每个channel的均值和方差(channel0~channel2),最后输出结果是消掉batch和feature,有几个通道就有几个均值和方差,
在这里插入图片描述
下图中第一个公式使用当前batch的feature- mean/var 使得值变成[0,1]
第二个公式在第一个公式的基础上增加了一个γ倍数和偏置β,使得数据变为[β,γ]之间。
μ和σ是当前batch统计出来,不需要梯度,而β,γ是计算出来的是需要梯度信息的,在训练时还有一个running-μ和running-σ是历史统计,即之前所有batch的统计。
在这里插入图片描述

3. Normalization pytorch实现

3.1 Normalization标准公式

在这里插入图片描述

3.2 2d normalization

下图中的layer.weight就是γ,bias就是β
BatchNorm2d的参数必须与输入channel数一致,否则会报错。
在这里插入图片描述
打印normalize layer,信息可以看到running-μ和running-σ以及β,γ
affine参数决定了β,γ是否需要更新
加粗样式

3.3 normalize test

Normalization layer和drop out layer类似,train和test的行为是不一样的
具体表现为:

  • test可能就一个sample 所以是无法统计μ和σ的
  • μ和σ=running-μ和running-σ
  • test 没有back forward,因此β,γ是不需要更新的
    切换test模式使用layer.eval()函数
    在这里插入图片描述

4. 使用normalization的好处

  • 收敛更快
  • 更好获得最优解
  • 更稳定。在使用大leaning rate的时候震荡不会那么明感

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

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

相关文章

在线考试教学系统平台系统源码/视频教学系统PHP源码/在线考试系统PHP源码

源码介绍 在线考试教学系统平台系统源码,视频教学系统PHP源码,在线考试系统PHP源码。 安装 1、部署好网站环境:php5.6mysql 2、将源码传至网站根目录,php源码用二进制上传,或者上传压缩包在空间解压 3、将“zztuk…

【PPT】修改新建文本框默认字体

【PPT】修改新建文本框默认字体

物联边缘网关有哪些功能?物联边缘网关在工业方向的应用-天拓四方

随着物联网技术的快速发展,越来越多的设备和系统正在接入到网络中,形成了一个庞大的智能生态系统。在这个系统中,物联边缘网关扮演着至关重要的角色,它不仅是连接设备和云端的桥梁,更是推动智能应用落地的关键。在当今…

【GD32】从零开始学GD32单片机高级篇——SDIO外设详解(GD32F470ZGT6)

目录 简介总线拓扑总线操作“无响应” 和 “无数据” 操作多块读写操作数据流读写操作 总线协议命令响应R1/R1b (普通命令响应)R2 (CID, CSD 寄存器)R3 (OCR 寄存器)R4 (Fast IO)R4b(Fast IO)R5 (中断请求)R5b(中断请求)R6 (发布的…

skywalking介绍及搭建

链路追踪框架比对: skywalking安装部署: 下载地址:Downloads | Apache SkyWalking 配置微服务与skywalking整合: copy agent/optional-plugins/apm-spring-cloud-getway-xx.jar到plugins,然后重启skywalking 监控界面…

会议管理系统(含源码+sql+视频导入教程)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 会议管理系统拥有两种角色 管理员:部门管理、员工管理、会议管理、会议室管理、预订会议、添加员工、注册员工审批等 用户:个人通知中心、预订会议、查看所有会议…

网络研究观-20240601

新战争时代的商业风险 美国人已经将战争视为遥远战场上发生的事件。然而,网络空间打破了这种看法,让全球战争的真正影响来到了美国家门口。 攻击不再局限于遥远的战场,而是在最意想不到的时间和地点发动袭击。 谁将主宰第五次工业革命&…

FreeSWITCH 1.10.10 简单图形化界面21-录音相关

FreeSWITCH 1.10.10 简单图形化界面21-录音相关 FreeSWITCH GUI界面预览00、安装FreeSWITCH GUI先看使用手册1、录音相关的应用11、record用法:举例:注意: 12、record_session用法:举例: 2、录音相关的变量3、单腿录音…

使用matplotlib绘制折线条形复合图

使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中,复合图形是一种非常有用的工具,可以同时显示多种数据类型的关系。在本篇博客中,我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…

联合和枚举(自定义类型)

1.枚举(关键字:enum) 1.1枚举类型的声明 把可能的值一一列举 赋的值是可能取值 1.2枚举类型的优点 1)增加代码的可读性和可维护性 2)和#define定义的标识符比较枚举有类型检查,更加严谨 3)便于调试&a…

vue:实现丝滑上传进度条

一、效果展示 缓若江海凝清光 . 二、代码 const uploadProgress ref(); //上传进度//进度丝滑更新 //进度,时常 const ProgressChange (targetPercent: number, duration: number) > {//performance.now() 是浏览器提供的一个高性能时间 API,它返…

Linux系统编程(七)网络编程TCP、UDP

本文目录 一、基础知识点1. IP地址2. 端口3. 域名4. 网络协议类型5. IP协议类型6. 字节序7. socket套接字 二、常用API1. socket套接字描述符2. bind套接字绑定3. listen设置客户端连接个数4. accept接收客户端请求5. connect连接服务端 三、编程流程1.TCP编程 在学习本章之前&…

《mysql轻松学习·二》

1、创建数据表 contacts:数据表名 auto_increament:自动增长 primary key:主键 engineInnoDB default charsetutf8; 默认字符集utf8,不写就默认utf8 对数据表的操作: alter table 数据表名 add sex varchar(1); //添…

使用YOLOv10训练自己的数据集

1. yolov10源码下载 THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection (github.com)https://github.com/THU-MIG/yolov10?tabreadme-ov-file 2. 环境配置 预先安装好ANACONDA、PyCharm或者VSCode等基本软件。参考以下博客: 史上最全最详细的An…

unity2D跑酷游戏

项目成果 项目网盘 导入资源包 放入Assets文件Assets资源文件 游戏流程分析 摄像机size调小,让图片占满屏幕 人跑本质,相对运动,图片无限向右滚动 图片720,缩小100倍第二个图片x为7.2每unit px100两张图片刚好挨着连贯 空对象Bg…

Yolov10笔记

一、前言 清华大学团队设计的Yolov10. 在这项工作中,我们主要从后处理和模型结构两方面进一步优化YOLO系列模型的性能和延迟平衡。我们首先为YOLO引入了端到端训练的一致双重分配,这在大大降低推理延迟的情况下保证了性能。此外,我们针对YOLO…

【计算机毕设】设计与实现基于SpringBoot的在线文档管理系统 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 在当今信息爆炸的时代,文档管理对于任何组织都至关重要。基于SpringBoot的在线文档管理系统的设计旨在为用户提供一个便捷、高效、安全的…

轻松拿捏C语言——【内存函数】

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🎉创作不易,请多多支持🎉 🌈感谢大家的阅读、点赞、收藏和关注💕 🌹如有问题,欢迎指正~~ 目录&#x1…

JVM学习-类加载过程(一)

概述 在Java中数据类型分为基本数据类型和引用数据类型,基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载按Java虚拟机规范,从class文件加载到内存中的类,到类卸载出内存为止,它的整个生命周期包含以下7…

测试工具fio

一、安装部署 fio是一款优秀的磁盘IO测试工具,在Linux中比较常用于测试磁盘IO 其下载地址:https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz 或者登录其官网:http://freshmeat.sourceforge.net/projects/fio/ 进行下载。 tar -zxvf fio-…