Weight Normalization(WN) 权重归一化
BN/LN/IN/GN都是在数据的层面上做的归一化,而Weight Normalization(WN)是对网络权值W做的归一化。WN的做法是将权值向量w在其欧氏范数和其方向上解耦成了参数向量 v 和参数标量 g 后使用SGD分别优化这两个参数。
WN也是和样本量无关的,所以可以应用在batchsize较小以及RNN等动态网络中;另外BN使用的基于mini-batch的归一化统计量代替全局统计量,相当于在梯度计算中引入了噪声。而WN则没有这个问题,所以在生成模型,强化学习等噪声敏感的环境中WN的效果也要优于BN。
WN没有额外参数,这样更节约显存。同时WN的计算效率也要优于要计算归一化统计量的BN。
但是,WN不具备BN把每一层的输出Y固定在一个变化范围的作用。因此采用WN的时候要特别注意参数初始值的选择
可以认为v是本来的权重
v除以v的模,可以得到它的单位方向向量,再乘以g,g是可学习的
本来的权重是v的,现在又新增了一个g,得到的新的w是保留了v的方向,然后又新增了一个可学习的幅度
torch.nn.utils.weight_norm(module, name='weight', dim=0)
import torch from torch import nn layer = nn.Linear(20, 40) m = nn.utils.weight_norm(layer, name='weight') print(m) print(m.weight_g.size()) print(m.weight_v.size())
手动实现
import torch from torch import nn input = torch.randn(8, 3, 20) linear = nn.Linear(20, 40, bias=False) wn_layer = nn.utils.weight_norm(linear, name='weight') wn_output = wn_layer(input)weight_direction = linear.weight / torch.norm(linear.weight, p=2, dim=1, keepdim=True) #二范数 weight_magnitude = wn_layer.weight_g output = input @ (weight_direction.permute(1,0).contiguous() * weight_magnitude.permute(1,0).contiguous()) assert torch.allclose(wn_output, output)
Weight Normalization(WN) 权重归一化相关推荐
- 7种Normalization总结(batch normalization,layer normalization,Weight Normalization,Cosine Normalization)
文章目录 七种normalization 1. Normalization 动机 原理 优点 缺点 2. Batch Normalization 动机 原理 优点 缺点 3. Layer Normal ...
- 【深度学习】Weight Normalization: 一种简单的加速深度网络训练的重参数方法
前言:为什么要Normalization 深度学习是一种在给定数据的情况下,学习求解目标函数最小化或者最大化的模型.在深度网络中,模型参数往往包含了大量的weights和biases.在求解优化模型的 ...
- 读论文1.Preference-inspired co-evolutionary algorithms using weight vectors 使用权重向量的偏好启发式协同进化算法(多目标优化算法)
1请抄写抽到论文的题目,并用中文翻译论文题目和关键词.(10分) Preference-inspired co-evolutionary algorithms using weight vectors ...
- 深度学习 --- 优化入门四(Batch Normalization(批量归一化)一)
前几节我们详细的探讨了,梯度下降存在的问题和优化方法,本节将介绍在数据处理方面很重要的优化手段即批量归一化(批量归一化). 批量归一化(Batch Normalization)并不能算作是一种最优化算 ...
- 标准化(Normalization)和归一化实现
概念: 原因: 由于进行分类器或模型的建立与训练时,输入的数据范围可能比较大,同时样本中各数据可 能量纲不一致,这样的数据容易对模型训练或分类器的构建结果产生影响,因此需要对其进行标准 化处理,去除数 ...
- Histogram Normalization 图像直方图归一化
一. 直方图归一化 有些灰度图像的像素并没有分布在 [0,255] 内,而是分布在 [0,255] 的子区间内.这样的图像肉眼看上去往往不是很清晰.我们可以通过直方图归一化的方式,将它的像素分布从 [ ...
- 深度学习 --- 优化入门五(Batch Normalization(批量归一化)二)
批归一化真的可以解决内部协方差偏移问题?如果不能解决,那它的作用是什么?你所接受的整个深度学习教育是一个谎言吗?让我们来寻找答案吧! 开始之前...... 我想提醒一下,本文是深度学习优化算法系列的第 ...
- LRN(Local Response Normalization)局部归一化分析
其中LRN的公式如下: 论文中说 Denoting by aix,y the activity of a neuron computed by applying kernel i at positio ...
- 机器学习图像源代码_使用带有代码的机器学习进行快速房地产图像分类
机器学习图像源代码 RoomNet is a very lightweight (700 KB) and fast Convolutional Neural Net to classify pictu ...
最新文章
- 前端资源构建-Grunt环境搭建
- PMCAFF | 智能硬件2.0时代:用户导向,内容连接
- fossid安装教程_如何在一个 U 盘上安装多个 Linux 发行版
- boost::spirit模块实现演示自定义的、用户定义的类型如何作为标记值类型轻松地与词法分析器集成
- linux 删旧内核,Ubuntu 删除旧内核的方法
- 使用Gradle的简单Spring MVC Web应用程序
- 实现Table多类不同数据类型的排序(顺反)
- Oracle 数据库误truncate table恢复过程
- Live Meeting 音频视频使用端口设置
- 吴恩达神经网络和深度学习-学习笔记-42-目标检测
- 马斯克宣布退出OpenAI,全身心投入特斯拉与SpaceX
- 阿里巴巴(杭州)转正答辩失败流水账
- Python编程要点:列表操作和Python的Fraction类(代码实现和练习)
- GPU 编程 CPU 异同点_22年后再战显卡市场 分析师:英特尔GPU不会构成威胁
- 放弃VMware改投VirtualBox的五个理由
- Pygame(四)画椭圆,弧
- Android 安全框架 -- 总概
- android自定义起止时间的时间刻度尺,Android 自定义View篇(六)实现时钟表盘效果...
- 鸿蒙app学习笔记一
- c语言程序考试试题,C语言程序设计期末考试试题(含答案)