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) 权重归一化相关推荐

  1. 7种Normalization总结(batch normalization,layer normalization,Weight Normalization,Cosine Normalization)

    文章目录 七种normalization 1. Normalization 动机 原理 优点 缺点 2. Batch Normalization 动机 原理 优点 缺点 3. Layer Normal ...

  2. 【深度学习】Weight Normalization: 一种简单的加速深度网络训练的重参数方法

    前言:为什么要Normalization 深度学习是一种在给定数据的情况下,学习求解目标函数最小化或者最大化的模型.在深度网络中,模型参数往往包含了大量的weights和biases.在求解优化模型的 ...

  3. 读论文1.Preference-inspired co-evolutionary algorithms using weight vectors 使用权重向量的偏好启发式协同进化算法(多目标优化算法)

    1请抄写抽到论文的题目,并用中文翻译论文题目和关键词.(10分) Preference-inspired co-evolutionary algorithms using weight vectors ...

  4. 深度学习 --- 优化入门四(Batch Normalization(批量归一化)一)

    前几节我们详细的探讨了,梯度下降存在的问题和优化方法,本节将介绍在数据处理方面很重要的优化手段即批量归一化(批量归一化). 批量归一化(Batch Normalization)并不能算作是一种最优化算 ...

  5. 标准化(Normalization)和归一化实现

    概念: 原因: 由于进行分类器或模型的建立与训练时,输入的数据范围可能比较大,同时样本中各数据可 能量纲不一致,这样的数据容易对模型训练或分类器的构建结果产生影响,因此需要对其进行标准 化处理,去除数 ...

  6. Histogram Normalization 图像直方图归一化

    一. 直方图归一化 有些灰度图像的像素并没有分布在 [0,255] 内,而是分布在 [0,255] 的子区间内.这样的图像肉眼看上去往往不是很清晰.我们可以通过直方图归一化的方式,将它的像素分布从 [ ...

  7. 深度学习 --- 优化入门五(Batch Normalization(批量归一化)二)

    批归一化真的可以解决内部协方差偏移问题?如果不能解决,那它的作用是什么?你所接受的整个深度学习教育是一个谎言吗?让我们来寻找答案吧! 开始之前...... 我想提醒一下,本文是深度学习优化算法系列的第 ...

  8. LRN(Local Response Normalization)局部归一化分析

    其中LRN的公式如下: 论文中说 Denoting by aix,y the activity of a neuron computed by applying kernel i at positio ...

  9. 机器学习图像源代码_使用带有代码的机器学习进行快速房地产图像分类

    机器学习图像源代码 RoomNet is a very lightweight (700 KB) and fast Convolutional Neural Net to classify pictu ...

最新文章

  1. 前端资源构建-Grunt环境搭建
  2. PMCAFF | 智能硬件2.0时代:用户导向,内容连接
  3. fossid安装教程_如何在一个 U 盘上安装多个 Linux 发行版
  4. boost::spirit模块实现演示自定义的、用户定义的类型如何作为标记值类型轻松地与词法分析器集成
  5. linux 删旧内核,Ubuntu 删除旧内核的方法
  6. 使用Gradle的简单Spring MVC Web应用程序
  7. 实现Table多类不同数据类型的排序(顺反)
  8. Oracle 数据库误truncate table恢复过程
  9. Live Meeting 音频视频使用端口设置
  10. 吴恩达神经网络和深度学习-学习笔记-42-目标检测
  11. 马斯克宣布退出OpenAI,全身心投入特斯拉与SpaceX
  12. 阿里巴巴(杭州)转正答辩失败流水账
  13. Python编程要点:列表操作和Python的Fraction类(代码实现和练习)
  14. GPU 编程 CPU 异同点_22年后再战显卡市场 分析师:英特尔GPU不会构成威胁
  15. 放弃VMware改投VirtualBox的五个理由
  16. Pygame(四)画椭圆,弧
  17. Android 安全框架 -- 总概
  18. android自定义起止时间的时间刻度尺,Android 自定义View篇(六)实现时钟表盘效果...
  19. 鸿蒙app学习笔记一
  20. c语言程序考试试题,C语言程序设计期末考试试题(含答案)

热门文章

  1. 【无标题】软件工程头歌
  2. 微信小程序开发知识点总结
  3. 随机点名系统——html初学实战
  4. 成都有学计算机学校,成都市有什么样计算机学校?
  5. 农林学科英语 课后习题答案与复习大纲
  6. August 21st 2016 Week 35th Sunday
  7. 华硕主板安装Ubuntu双系统
  8. 搜狗输入法 状态栏 自带的好用工具
  9. 记录第一个360浏览器翻译插件
  10. log4j日志文件乱码问题的解决方法