当前位置: 首页 > news >正文

深度学习 | 表示学习 | 卷积神经网络 | Batch Normalization 在 CNN 中的示例 | 20

如是我闻: 让我们来用一个具体的例子说明 Batch Normalization 在 CNN 里的计算过程,特别是如何对每个通道(channel)进行归一化

在这里插入图片描述


1. 假设我们有一个 CNN 层的输出

假设某个 CNN 层的输出是一个 4D 张量,形状为:
X = ( m , C , H , W ) X = (m, C, H, W) X=(m,C,H,W)
其中:

  • m = 2 m = 2 m=2(batch 大小 = 2,即有 2 张图片)
  • C = 3 C = 3 C=3(通道数 = 3,比如 RGB 三个通道)
  • H = 2 , W = 2 H = 2, W = 2 H=2,W=2(特征图大小是 2 × 2 2 \times 2 2×2

现在,我们假设输入数据如下(仅展示一个通道的数据):

X = [ 样本 1: [ [ 1 , 2 ] [ 3 , 4 ] [ 5 , 6 ] [ 7 , 8 ] ] 样本 2: [ [ 2 , 3 ] [ 4 , 5 ] [ 6 , 7 ] [ 8 , 9 ] ] ] X = \begin{bmatrix} \text{样本 1:} & \begin{bmatrix} [1, 2] & [3, 4] \\ [5, 6] & [7, 8] \end{bmatrix} \\ \text{样本 2:} & \begin{bmatrix} [2, 3] & [4, 5] \\ [6, 7] & [8, 9] \end{bmatrix} \end{bmatrix} X= 样本 1:样本 2:[[1,2][5,6][3,4][7,8]][[2,3][6,7][4,5][8,9]]

这个数据表示的是 一个 batch(2 张图片),每张图片有一个 2 × 2 2 \times 2 2×2 特征图


2. 计算均值和方差

(1) 计算均值

我们需要对所有样本的这个通道进行归一化,所以我们计算该通道在所有样本上的均值:

μ B = 1 m × H × W ∑ i = 1 m ∑ j = 1 H ∑ k = 1 W x i , j , k \mu_B = \frac{1}{m \times H \times W} \sum_{i=1}^{m} \sum_{j=1}^{H} \sum_{k=1}^{W} x_{i, j, k} μB=m×H×W1i=1mj=1Hk=1Wxi,j,k

代入数据:
μ B = 1 2 × 2 × 2 ( 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 ) \mu_B = \frac{1}{2 \times 2 \times 2} (1+2+3+4+5+6+7+8 + 2+3+4+5+6+7+8+9) μB=2×2×21(1+2+3+4+5+6+7+8+2+3+4+5+6+7+8+9)
= 76 8 = 9.5 = \frac{76}{8} = 9.5 =876=9.5

(2) 计算方差

方差的计算公式:
σ B 2 = 1 m × H × W ∑ i = 1 m ∑ j = 1 H ∑ k = 1 W ( x i , j , k − μ B ) 2 \sigma_B^2 = \frac{1}{m \times H \times W} \sum_{i=1}^{m} \sum_{j=1}^{H} \sum_{k=1}^{W} (x_{i, j, k} - \mu_B)^2 σB2=m×H×W1i=1mj=1Hk=1W(xi,j,kμB)2

代入计算:
σ B 2 = 1 8 ( ( 1 − 4.75 ) 2 + ( 2 − 4.75 ) 2 + ( 3 − 4.75 ) 2 + ( 4 − 4.75 ) 2 + ⋯ + ( 9 − 4.75 ) 2 ) \sigma_B^2 = \frac{1}{8} \left( (1-4.75)^2 + (2-4.75)^2 + (3-4.75)^2 + (4-4.75)^2 + \dots + (9-4.75)^2 \right) σB2=81((14.75)2+(24.75)2+(34.75)2+(44.75)2++(94.75)2)

= 1 8 ( 14.06 + 7.56 + 3.06 + 0.56 + 0.56 + 3.06 + 7.56 + 14.06 ) = \frac{1}{8} \left( 14.06 + 7.56 + 3.06 + 0.56 + 0.56 + 3.06 + 7.56 + 14.06 \right) =81(14.06+7.56+3.06+0.56+0.56+3.06+7.56+14.06)

= 50.44 8 = 6.305 = \frac{50.44}{8} = 6.305 =850.44=6.305


3. 归一化数据

标准化公式:
x ^ i , j , k = x i , j , k − μ B σ B 2 + ϵ \hat{x}_{i,j,k} = \frac{x_{i,j,k} - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i,j,k=σB2+ϵ xi,j,kμB

假设 ϵ = 1 0 − 5 \epsilon = 10^{-5} ϵ=105很小,可以忽略不计,那么:
x ^ i , j , k = x i , j , k − 4.75 6.305 \hat{x}_{i,j,k} = \frac{x_{i,j,k} - 4.75}{\sqrt{6.305}} x^i,j,k=6.305 xi,j,k4.75

计算部分归一化的值(只展示部分):
x ^ 1 , 1 , 1 = 1 − 4.75 6.305 ≈ − 3.75 2.51 ≈ − 1.49 \hat{x}_{1,1,1} = \frac{1 - 4.75}{\sqrt{6.305}} \approx \frac{-3.75}{2.51} \approx -1.49 x^1,1,1=6.305 14.752.513.751.49
x ^ 1 , 1 , 2 = 2 − 4.75 2.51 ≈ − 1.10 \hat{x}_{1,1,2} = \frac{2 - 4.75}{2.51} \approx -1.10 x^1,1,2=2.5124.751.10
x ^ 2 , 2 , 2 = 9 − 4.75 2.51 ≈ 1.70 \hat{x}_{2,2,2} = \frac{9 - 4.75}{2.51} \approx 1.70 x^2,2,2=2.5194.751.70

经过这个过程,所有特征都会变成均值 0,方差 1


4. 通过可学习参数进行缩放和平移

为了让网络有更强的表达能力,BN 引入了两个可学习参数:
y i , j , k = γ x ^ i , j , k + β y_{i,j,k} = \gamma \hat{x}_{i,j,k} + \beta yi,j,k=γx^i,j,k+β

  • γ \gamma γ 控制缩放(scale)。
  • β \beta β 控制偏移(shift)。

如果 γ = 2 , β = 0.5 \gamma = 2, \beta = 0.5 γ=2,β=0.5,那么:
y 1 , 1 , 1 = 2 × ( − 1.49 ) + 0.5 = − 2.48 y_{1,1,1} = 2 \times (-1.49) + 0.5 = -2.48 y1,1,1=2×(1.49)+0.5=2.48
y 1 , 1 , 2 = 2 × ( − 1.10 ) + 0.5 = − 1.70 y_{1,1,2} = 2 \times (-1.10) + 0.5 = -1.70 y1,1,2=2×(1.10)+0.5=1.70
y 2 , 2 , 2 = 2 × ( 1.70 ) + 0.5 = 3.90 y_{2,2,2} = 2 \times (1.70) + 0.5 = 3.90 y2,2,2=2×(1.70)+0.5=3.90


5. 结果解释

(1) 归一化后,所有数据均值接近 0,方差接近 1

  • 这样可以稳定训练过程,防止梯度消失或梯度爆炸。

(2) 通过 γ \gamma γ β \beta β 让网络恢复部分信息

  • 这样可以确保 BN 不会限制网络的表达能力,同时还能优化训练。

6. 总的来说

  1. Batch Normalization 在 CNN 里是对每个通道单独归一化,而不是整个输入张量归一化
  2. 计算过程
    • 计算当前 batch 每个通道的均值和方差
    • 对该通道的所有数据进行归一化,使其均值为 0,方差为 1
    • 通过可学习参数 γ \gamma γ β \beta β 进行缩放和平移,使得网络仍然能够学习适应的特征分布。
  3. 最终作用
    • 减少 Internal Covariate Shift(内部协变量偏移)
    • 加速收敛,提高稳定性
    • 降低对超参数(如学习率、初始化)的依赖

以上

相关文章:

深度学习 | 表示学习 | 卷积神经网络 | Batch Normalization 在 CNN 中的示例 | 20

如是我闻: 让我们来用一个具体的例子说明 Batch Normalization 在 CNN 里的计算过程,特别是如何对每个通道(channel)进行归一化。 1. 假设我们有一个 CNN 层的输出 假设某个 CNN 层的输出是一个 4D 张量,形状为&#…...

最短木板长度

最短木板长度 真题目录: 点击去查看 E 卷 100分题型 题目描述 小明有 n 块木板,第 i ( 1 ≤ i ≤ n ) 块木板长度为 ai。 小明买了一块长度为 m 的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。 小明想让最…...

团体程序设计天梯赛-练习集——L1-034 点赞

前言 20分的题目题目不难,理解也不难,做起来有点问题 L1-034 点赞 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本…...

利用腾讯云cloud studio云端免费部署deepseek-R1

1. cloud studio 1.1 cloud studio介绍 Cloud Studio(云端 IDE)是基于浏览器的集成式开发环境,为开发者提供了一个稳定的云端工作站。支持CPU与GPU的访问。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器即可使用。Clo…...

LabVIEW的智能电源远程监控系统开发

在工业自动化与测试领域,电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作,存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网(IIoT)技术,实现电源设备…...

Docker深度解析:安装各大环境

安装 Nginx 实现负载均衡: 挂载 nginx html 文件: 创建过载目录: mkdir -p /data/nginx/{conf,conf.d,html,logs} 注意:在挂载前需要对 conf/nginx.conf 文件进行编写 worker_processes 1;events {worker_connections 1024; …...

牛客 - 链表相加(二)

描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。 给定两个这种链表,请生成代表两个整数相加值的结果链表。 数据范围:0≤n,m≤1000000,链表任意值 0≤val≤9 要求:空间复杂度 O(n)&am…...

GPU 硬件原理架构(一)

这张费米管线架构图能看懂了,整个GPU的架构基本就熟了。市面上有很多GPU厂家,他们产品的架构各不相同,但是核心往往差不多,整明白一了个基本上就可以触类旁通了。下面这张图信息量很大,可以结合博客GPU 英伟达GPU架构回…...

C/C++编译器

C/C 代码是不可跨平台的,Windows 和 Unix-like 有着不同的 API,C/C 在不同平台有着不同编译器。 MSVC Windows 平台,MSVC 是 Visual Studio 中自带的 C/C 编译器。 GCC Unix-like 平台,GCC 原名 GNU C Compiler,后…...

Immutable设计 SimpleDateFormat DateTimeFormatter

专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解不可变设计模式,时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…...

最新EFK(Elasticsearch+FileBeat+Kibana)日志收集

文章目录 1.EFK介绍2.操作前提3.FileBeat8.15下载&安装4.编写FileBeat配置文件5.启动FileBeat6.模拟实时日志数据生成7.查看索引(数据流)是否创建成功8.创建数据视图:9.查看数据视图10.使用KQL对采集的日志内容进行过滤11.给日志数据配置保留天数(扩展知识) 1.E…...

Vue 3 30天精进之旅:Day 15 - 插件和指令

欢迎来到“Vue 3 30天精进之旅”的第15天!今天我们将深入探讨Vue 3中的插件和自定义指令。这两个主题能够帮助我们扩展Vue的功能,使我们的应用更加灵活和强大。 一、插件概述 1. 什么是插件? 在Vue中,插件是一种功能扩展机制。…...

【实战篇】Android安卓本地离线实现视频检测人脸

实战篇Android安卓本地离线实现视频检测人脸 引言项目概述核心代码类介绍人脸检测流程项目地址总结 引言 在当今数字化时代,人脸识别技术已经广泛应用于各个领域,如安防监控、门禁系统、移动支付等。本文将以第三视角详细讲解如何基于bifan-wei-Face/De…...

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter3-语言基础

三、语言基础 ECMAScript 的语法很大程度上借鉴了 C 语言和其他类 C 语言,如 Java 和 Perl。ECMAScript 中一切都区分大小写。无论是变量、函数名还是操作符,都区分大小写。 所谓标识符,就是变量、函数、属性或函数参数的名称。标识符可以由…...

(dpdk f-stack)-堆栈溢出-野指针-内存泄露(问题定位)

目的:解决堆栈溢出,野指针,内存泄露。 解决方法 [root@ test]# yum install libasan [root@ test]# cat test.c int main() { int array[10]; array[11] = 11; return 0; } [root@ test]# gcc -fsanitize=address -O1 -fno-omit-frame-pointer -g -O0 test.c -o test ./te…...

HTML5 教程之标签(3)

HTML5 <center> 标签 (已废弃) 定义和用法 <center> 标签对其包围的文本进行水平居中处理。HTML5不支持使用<center>标签&#xff0c;因此有关该标签的更多信息&#xff0c;请参考“HTML <center>标签”部分&#xff01; 示例: <center>这个…...

【蓝桥】动态规划-简单-破损的楼梯

题目 解题思路 完整代码 #include <bits/stdc.h> using namespace std; const int N1e59; const long long p1e97; long long dp[N];//dp[i]表示走到第i级台阶的方案数 bool broken[N];//broken代表破损台阶的数组 int main() {int n,m;cin>>n>>m;for(int …...

如何自定义软件安装路径及Scoop包管理器使用全攻略

如何自定义软件安装路径及Scoop包管理器使用全攻略 一、为什么无法通过WingetUI自定义安装路径&#xff1f; 问题背景&#xff1a; WingetUI是Windows包管理器Winget的图形化工具&#xff0c;但无法直接修改软件的默认安装路径。原因如下&#xff1a; Winget设计限制&#xf…...

107,【7】buuctf web [CISCN2019 华北赛区 Day2 Web1]Hack World

这次先不进入靶场 看到红框里面的话就想先看看uuid是啥 定义与概念 UUID 是 Universally Unique Identifier 的缩写&#xff0c;即通用唯一识别码。它是一种由数字和字母组成的 128 位标识符&#xff0c;在理论上可以保证在全球范围内的唯一性。UUID 的设计目的是让分布式系…...

STM32 ADC单通道配置

硬件电路 接线图&#xff1a; ADC基本结构图 代码配置 根据基本结构框图 1.定义结构体变量 //定义结构体变量 GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量 ADC_InitTypeDef ADC_InitStructure; //定义ADC结构体变量 2.开启RCC时钟 ADC、GPIO的时钟&#x…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...