深度学习-BN(Batch Normalization)

news2024/9/20 18:35:10

1. 介绍
Batch Normalization是2015年一篇论文中提出的 数 据 归 一 化 \color{blue}{数据归一化} 方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。并且起到一定的正则化作用,几乎代替了Dropout。
2. 公式
I n p u t : B = { x 1... m } ; λ , β ( p a r a m e t e r s t o b e l e a r n e d ) Input:B = \lbrace x_{1...m}\rbrace;\lambda,\beta(parameters\quad to\quad be\quad learned) Input:B={x1...m};λ,β(parameterstobelearned) O u t p u t : { y i = B N λ , β ( x i ) } Output:\lbrace{y_i=BN_{\lambda,\beta}(x_i)}\rbrace Output:{yi=BNλ,β(xi)} μ B ← 1 m ∑ i = 1 m x i \mu_B\leftarrow\cfrac{1}{m}\sum_{i=1}^mx_i μBm1i=1mxi σ B 2 ← 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_B^2\leftarrow\cfrac{1}{m}\sum_{i=1}^m(x_i-\mu_B)^2 σB2m1i=1m(xiμB)2 x i ‾ ← x i − μ B σ B 2 + ϵ \overline{x_i}\leftarrow\cfrac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}} xiσB2+ϵ xiμB y i ← γ x i ‾ + β y_i\leftarrow\gamma \overline{x_i}+\beta yiγxi+β

BN的具体操作为:先计算 B B B的均值和方差,之后将 B B B集合的均值、方差变换为0、1,最后将 B B B中每个元素乘以 γ \gamma γ再加 β \beta β,输出。 γ \gamma γ β \beta β是可训练参数,参与整个网络的BP;
归一化的目的:将数据规整到统一区间,减少数据的发散程度,降低网络的学习难度。BN的精髓在于归一之后,使用 γ \gamma γ β \beta β作为还原参数,在一定程度上保留原数据的分布。
3. B B B的组成

神经网络中传递的张量数据,其维度通常记为[N, H, W, C],其中N是batch_size,H、W是行、列,C是通道数。那么上式中BN的输入集合 B B B就是下图中蓝色的部分。
在这里插入图片描述
均值的计算,就是在一个批次内,将每个通道中的数字单独加起来,再除以 N × H × W N \times H \times W N×H×W。举个例子:该批次内有10张图片,每张图片有三个通道RBG,每张图片的高、宽是H、W,那么均值就是计算10张图片R通道的像素数值总和除以 10 × H × W 10 \times H \times W 10×H×W ,再计算B通道全部像素值总和除以 10 × H × W 10 \times H \times W 10×H×W,最后计算G通道的像素值总和除以 10 × H × W 10 \times H \times W 10×H×W。方差的计算类似。
可训练参数 γ \gamma γ β \beta β的维度等于张量的通道数,在上述例子中,RBG三个通道分别需要一个 γ \gamma γ和一个 β \beta β,所以 γ \gamma γ β \beta β的维度等于3。
4. 训练与推理时BN中的均值、方差
训 练 时 , 均 值 、 方 差 分 别 是 该 批 次 内 数 据 相 应 维 度 的 均 值 与 方 差 ; \color{blue}{训练时,均值、方差分别是该批次内数据相应维度的均值与方差;}
推 理 时 , 均 值 、 方 差 是 基 于 所 有 批 次 的 期 望 和 方 法 的 期 望 计 算 所 得 , 公 式 如 下 : \color{blue}{推理时,均值、方差是基于所有批次的期望和方法的期望计算所得,公式如下:}
E [ x ] ← E B [ μ B ] E[x]\leftarrow E_B[\mu_B] E[x]EB[μB] V a r [ x ] ← m m − 1 E B [ σ B 2 ] Var[x]\leftarrow \cfrac{m}{m-1}E_B[\sigma_B^2] Var[x]m1mEB[σB2]
参考:
https://zhuanlan.zhihu.com/p/93643523

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

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

相关文章

postgresql 数据库导出和导入

简介 本篇文章主要介绍PostgreSQL库和表的导出和导入以及常用的数据库管理工具的使用 一、数据库的导出和导入 1. 使用pgAdmin导出和导入数据库 导出 导入 新建数据库,右键Restore 2. 使用Navicate导出和导入数据库 导出 选择要导出的数据库,点…

【小f的刷题笔记】(JS)数组 - 差分数组 LeetCode1109 LeetCode1094

【数组】 差分数组: 🌟 频繁对原始数组的某个区间的元素进⾏增减 ✔ 把每个数与前一个数的差值计算出来存在一个新数组里,区间的加减通过把新数组中区间开始下标的值加/减,区间结束下标对应的值减/加(反一下&#x…

软件工程笔记

软件工程软件工程:指导计算机软件系统开发和维护的工程学科:目的:有序,可控,可管理软件工程方法学要素:方法,工具,过程软件:程序数据文档软件分类:软件生命周期补充:软件工程方法:软件生命周期中使用的一整套技术评价标准:软件开发方法:软件工程:指导计算机软件系统开发和维护的…

蓝桥杯时间显示

题目描述 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 19701970 年 11 月 11 日 00:00:0000:00:00 到当前时刻经过的毫秒数。 现在,小蓝要在客户端显示出这个时间。…

[附源码]Python计算机毕业设计Django社区疫情防控信息管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【有营养的算法笔记】快速排序

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:有营养的算法笔记 文章目录一、思路二、模板讲解三、模板测试四、加练 —— 第 K 个数今天正式开启算法笔记…

生产型外协管理系统:功能解析篇

随着经济全球化与电商的全面发展,生产型企业的生产订单是在逐年生产的。由于自身的生产能力有限,很多企业不得不将些许业务进行外包生产,也就是所谓的外协生产。既然需要外协生产的话,那么对外协生产进行管理也就尤为重要了。作为…

[附源码]计算机毕业设计软考刷题小程序Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Express:JSONP 接口

JSONP 接口 1. 回顾 JSONP 的概念与特点 概念&#xff1a;浏览器端通过 <script> 标签的 src 属性&#xff0c;请求服务器上的数据&#xff0c;同时&#xff0c;服务器返回一个函数的调用。这种请求数据的方式叫做 JSONP。 特点&#xff1a; ①JSONP 不属于真正的 Aj…

ASEMI整流桥KBU808参数,KBU808尺寸,KBU808大小

编辑-Z ASEMI整流桥KBU808参数&#xff1a; 型号&#xff1a;KBU808 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;800V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;560V 最大直流阻断电压&#xff08;VDC&#xff09;&#xff1a;800…

Linux学习-72-GRUB加密方法(2种加密方式)

16.14 GRUB加密方法&#xff08;2种加密方式&#xff09; Linux 在启动时&#xff0c;在 GRUB 管理界面中是可以通过按"e"键进入编辑模式&#xff0c;修改启动选项的。每个启动选项都支持按"e"键进入编辑模式。在编辑模式中可以修改启动模式&#xff0c;比…

有必要好好学习一下dc_shell了

首先最好是有design compiler user guide&#xff0c;哪里不会找哪里&#xff1f;然后来看看常见的dc_shell 命令 一般先要起一个dc_shell。 dc_shell 启动以后&#xff0c;使用 read_ddc xxx/DBs/ddc/<block_name>.ddc 将design compiler的综合结果读入。 为了确认读入…

GitHub上热门的Java开源项目

1 JavaGuide https://github.com/Snailclimb/JavaGuide Star 26396 一份Java学习指南&#xff0c;涵盖大部分Java程序员所需要掌握的核心知识 2 DoraemonKit https://github.com/didi/DoraemonKit Star 4826 简称 "DoKit"&#xff0c;中文名哆啦A梦&#xff0c;意…

数学建模三大类模型适用场景及建模方法(纯干货)

目录 一&#xff0c;评价类算法 1&#xff0c;层次分析法 ●基本思想: ●基本步骤: ●优点: ●缺点 ●适用范围: ●改进方法: 2&#xff0c;灰色综合评价法&#xff08;灰色关联度分析&#xff09; ●基本思想: ●基本步骤: ●优点: ●缺点: ●适用范围: ●改进方…

TMS FMX Cloud提供集成元素

TMS FMX Cloud提供集成元素 TMS FMX云包能够为用户和开发人员提供从Firemonkey软件到云光解决方案的可访问性。TMS FMX云包基本上由能够与不同的云解决方案一起提供集成的元素组成。 每当FMX计数增加时&#xff0c;性能就会下降。 有一个基本的设计时集成可用。 基于架构的火猴…

探花交友_第2章_环境搭建(新版)

探花交友_第2章_环境搭建&#xff08;新版&#xff09; 文章目录探花交友_第2章_环境搭建&#xff08;新版&#xff09;课程介绍 《探花交友》1、项目介绍1.1、项目背景1.2、市场分析1.3、目标用户群体1.4、使用场景1.5、竞争对手分析1.5.1、竞品选择1.5.2、竞品分析1.6、项目简…

[数据结构] - 顺序表与链表详解

顺序表和链表同属于线性表&#xff0c;线性表顾名思义&#xff0c;就是连续的一条直线&#xff0c;但它在物理结构上是不一定连续的&#xff0c;通常的线性表用顺序表和链表来实现。下面我们介绍顺序表和链表 文章目录1. 顺序表1.1 顺序表的大致介绍1.2 顺序表的代码实现顺序表…

数据结构练级之路【链表带环问题】

一、链表带环问题的代码和几个经典的面试题&#xff08;重点在于如何算入口点&#xff09; 代码非常的简单&#xff0c;但是有几个关于带环问题的讲解就比较不好理解 1.有关链表是否带环的题目和代码 &#xff08;较难且较经典&#xff09;&#xff08;有关链表带环的问题&a…

《零基础学机器学习》笔记-第1课-MNIST数字识别

机器学习项目的实际过程大致可以分为5个环节&#xff0c;下面以卷积神经网络分析MNIST数据集为例实战一下。 MNIST数据集-卷积神经网络-python源码下载 一、问题定义 MNIST数据集&#xff0c;相当于机器学习领域的Hello World&#xff0c;非常经典&#xff0c;包括60000张训练…

JAVA队列及实现类

什么是队列&#xff1f; 队列是一种特殊的线性表&#xff0c;遵循先入先出、后入后出的基本原则&#xff0c;一般来说&#xff0c;它只允许在表的前端进行删除操作&#xff0c;而在表的后端进行插入操作&#xff0c;但是java的某些队列运行在任何地方插入删除&#xff1b;比如我…