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

深度学习|表示学习|CNN中的Layer Normalization | 25

如是我闻: 在 CNN 中,每个样本在经过一层隐藏层(通常是卷积层 + 激活函数)后,确实会变成一组特征图(Feature Maps)。所以,在 CNN 里,Layer Normalization 主要作用在通道(C 维度)上,而不是 batch 维度。

在这里插入图片描述


📌 为什么 CNN 中 Layer Normalization 作用在通道维度(C)?

在 CNN 里,每个输入样本(比如一张图片)经过一层卷积层后,会变成一组特征图:
输入尺寸: ( C in , H , W ) ⇒ 输出尺寸: ( C out , H , W ) \text{输入尺寸:} (C_{\text{in}}, H, W) \quad \Rightarrow \quad \text{输出尺寸:} (C_{\text{out}}, H, W) 输入尺寸:(Cin,H,W)输出尺寸:(Cout,H,W)

  • ( C in (C_{\text{in}} (Cin 是输入通道数(比如 RGB 图像有 3 个通道)。
  • C out C_{\text{out}} Cout 是卷积后的输出通道数(通常会增加,比如 64 个通道)。
  • H 和 W 代表特征图的空间大小。

📌 CNN 的每一层输出的不是一个数值,而是一组特征图!

  • 在 CNN 里,每个样本在每一层都会产生 多个特征图(Feature Maps),每个通道表示不同的特征(比如边缘、纹理、颜色等)。
  • 也就是说,CNN 里,每个样本的隐藏层输出是一个 (C, H, W) 维度的张量,而不是一个单独的数值向量

📌 传统的 Layer Normalization 作用在 MLP(全连接网络)中

在 MLP(多层感知机)里,每一层的神经元输出是一个 向量(比如一个 128 维的隐藏层向量):
x = [ x 1 , x 2 , . . . , x 128 ] x = [x_1, x_2, ..., x_{128}] x=[x1,x2,...,x128]

  • 在 MLP 里,Layer Normalization 直接对这个向量归一化,计算它的均值和标准差:
    μ = 1 H ∑ i = 1 H x i , σ = 1 H ∑ i = 1 H ( x i − μ ) 2 \mu = \frac{1}{H} \sum_{i=1}^{H} x_i, \quad \sigma = \sqrt{\frac{1}{H} \sum_{i=1}^{H} (x_i - \mu)^2} μ=H1i=1Hxi,σ=H1i=1H(xiμ)2
    • 这里的 H H H 是隐藏层的维度(比如 128)。

📌 CNN 里 Layer Normalization 的特殊性

在 CNN 里,每一层的输出是一个 3D 特征图:
( X ∈ R C × H × W ) (X \in \mathbb{R}^{C \times H \times W}) (XRC×H×W)

  • 在 CNN 里,我们不能像 MLP 那样直接对整个向量归一化,而是要考虑 H 和 W 维度。
  • Layer Normalization 在 CNN 里,通常会对通道(C 维度)单独归一化,即:
    • 对每个样本的每个通道单独计算均值和标准差,然后归一化:
      μ = 1 H × W ∑ i = 1 H ∑ j = 1 W x i , j \mu = \frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} x_{i,j} μ=H×W1i=1Hj=1Wxi,j
      σ = 1 H × W ∑ i = 1 H ∑ j = 1 W ( x i , j − μ ) 2 \sigma = \sqrt{\frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} (x_{i,j} - \mu)^2} σ=H×W1i=1Hj=1W(xi,jμ)2
    • 也就是说,在 CNN 里,Layer Normalization 不是对整个通道(C 维度)求均值,而是对每个通道的 H × W 位置进行归一化

以上

相关文章:

  • 数据可视化
  • 深度解析策略模式:从理论到企业级实战应用
  • Unity-Mirror网络框架-从入门到精通之Multiple Additive Scenes示例
  • iOS主要知识点梳理回顾-5-运行时方法交换
  • Jmeter+Influxdb+Grafana平台监控性能测试过程
  • STM32F407通过FSMC扩展外部SRAM和NAND FLASH
  • Gitlab中如何进行仓库迁移
  • 游戏应用谷歌后台使用介绍
  • 设计模式Python版 命令模式(上)
  • conda 修复 libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found 简便方法
  • 如何在Servlet容器中使用HttpServletResponse?
  • 【Mybatis】动态 SQL:代码与数据的灵动共舞,奏响数据库查询的华丽乐章
  • day9手机创意软件
  • 小程序canvas2d实现横版全屏和竖版逐字的签名组件(字帖式米字格签名组件)
  • Java面试题总结 - Java多线程篇(附答案)
  • Open Liberty使用指南及微服务开发示例(二)
  • DataBase【MySQL基础夯实使用说明(下)】
  • 在软件产品从开发到上线过程中,不同阶段可能出现哪些问题,导致软件最终出现线上bug
  • 网络安全之探险
  • Python Pandas(7):Pandas 数据清洗
  • 国家主席习近平同普京总统举行小范围会谈
  • 黄玮接替周继红出任国家体育总局游泳运动管理中心主任
  • 普京:“胜利日停火”已开始生效
  • 再有20余篇论文出现“妇科男患者”“前列腺女患者”,如何破除“水论文”灰产链?
  • 两国战机均未侵入对方领空,巴方公布对印回击细节
  • 应对美政策调整:中国重在开放与创新,维护好数据主权