IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> pytorch的归一化层 -> 正文阅读

[人工智能]pytorch的归一化层

原理

归一化公式:
y = x ? E [ x ] V a r [ x ] + ? ? γ + β y=\frac{x-E[x]}{\sqrt{Var[x]+\epsilon}}*\gamma + \beta y=Var[x]+? ?x?E[x]??γ+β

其中:

  • E [ x ] E[x] E[x] 是向量 x x x 的均值
  • V a r [ x ] Var[x] Var[x] 是向量 x x x 的方差
  • ? \epsilon ? 常数,通常等于 0.00001 0.00001 0.00001,防止分母为 0
  • γ \gamma γ 用于仿射变换
  • β \beta β 用于仿射变换

本文介绍的 4 种归一化主要是针对的维度不同,例如 BatchNorm 是对所有 banch 的单个通道归一化,每个通道的归一化独立,而 GroupNorm 是一个 banch 下的通道分组归一化,不受 banch size 的影响,如下图:

请添加图片描述

1 BatchNorm

BN 是对所有 banch 的单个通道做归一化,每个通道都分别做一次。

# 这里只示例 2d 的,针对常用的卷积维度
torch.nn.BatchNorm2d(num_features, eps=1e-5, momentum=0.1,\
                     affine=True, track_running_stats=True)

成员变量:

  • num_features:通道数。
  • eps:常数 ? \epsilon ?
  • momentum:动量参数,用来控制 running_mean 和 running_var 的更新,更新方法: M n e w = ( 1 ? m ) ? M o l d + m ? m e a n M_{new}=(1-m)*M_{old}+m*mean Mnew?=(1?m)?Mold?+m?mean,其中, M n e w M_{new} Mnew? 是最新的 running_mean, M o l d M_{old} Mold? 是上一次的 running_mean, m e a n mean mean 是当前批数据的均值。
  • affine:仿射变换的开关
    • 如果 affine=False,则 γ = 1 \gamma=1 γ=1 β = 0 \beta=0 β=0,且不能学习;(对应weight、bias变量)
    • 如果 affine=True,则 γ \gamma γ β \beta β 可以学习;
  • training:训练状态或测试状态,两种状态下运行逻辑不通。
  • track_running_stats:如果为 True,则统计跟踪 batch 的个数,记录在 num_batches_tracked 中。
  • num_btaches_tracked:跟踪 batch 的个数。

trainning 和 tracking_running_stats 有 4 种组合:

trainningtracking_running_stats说明
TrueTrue正常的训练过程,跟踪整个训练过程的 banch 特性
TrueFalse不跟踪训练过程的 banch 特性,只计算当前的 banch 统计特性
FalseTrue使用之前训练好的 running_mean、running_var,且不会更新
FalseFalse(一般不采用)只计算当前特征

更新过程:

  • running_mean、running_var 是在 forward 过程中更新的,记录在 buffer 中。(反向传播部影响)
  • γ \gamma γ β \beta β 是在反向传播中学习得到的。
  • model.eval() 可以固定住 running_mean、running_var。

2 GroupNorm

torch.nn.GroupNorm(num_groups, num_channels, eps=1e-5, affine=True)

3 InstanceNorm

torch.nn.InstanceNorm2d(num_features, eps=1e-5, momentum=0.1, affine=False, track_running_stats=False)

4 LayerNorm

torch.nn.LayerNorm(normalized_shape, eps=1e-5, elementwise_affine=True)

参考上面的原理图,LayerNorm 是对一个 banch 的所有通道做归一化,如果输入的 tensor 维度为 [ 4 , 6 , 3 , 3 ] [4,6,3,3] [4,6,3,3],那么函数的传参 normalized_shape 就是 [ 6 , 3 , 3 ] [6,3,3] [6,3,3]

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:22:35  更:2022-04-09 18:26:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:28:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码