BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm总结
2024-09-04 08:16:20
https://blog.csdn.net/liuxiao214/article/details/81037416
http://www.dataguru.cn/article-13032-1.html
1. BatchNormalization
实现时,对axis = 0维度求均值和方差 -> 对一个batch求均值和方差
(Tensorflow代码)
def Batchnorm_simple_for_train(x, gamma, beta, bn_param):
"""
param:x : 输入数据,设shape(B,L)
param:gama : 缩放因子 γ
param:beta : 平移因子 β
param:bn_param : batchnorm所需要的一些参数
eps : 接近0的数,防止分母出现0
momentum : 动量参数,一般为0.9, 0.99, 0.999
running_mean :滑动平均的方式计算新的均值,训练时计算,为测试数据做准备
running_var : 滑动平均的方式计算新的方差,训练时计算,为测试数据做准备
"""
running_mean = bn_param['running_mean'] #shape = [B]
running_var = bn_param['running_var'] #shape = [B]
results = 0. # 建立一个新的变量 x_mean=x.mean(axis=0) # 计算x的均值
x_var=x.var(axis=0) # 计算方差
x_normalized=(x-x_mean)/np.sqrt(x_var+eps) # 归一化
results = gamma * x_normalized + beta # 缩放平移 running_mean = momentum * running_mean + (1 - momentum) * x_mean
running_var = momentum * running_var + (1 - momentum) * x_var #记录新的值
bn_param['running_mean'] = running_mean
bn_param['running_var'] = running_var return results , bn_param
2. LayerNormaliztion
实现时,对axis = 1维度求均值和方差 -> 对一个样例的所有features的值求均值和方差
(Pytorch 代码,来自The Annotated Transformer)
class LayerNorm(nn.Module):
"Construct a layernorm module (See citation for details)."
def __init__(self, features, eps=1e-6):
super(LayerNorm, self).__init__()
self.a_2 = nn.Parameter(torch.ones(features))
self.b_2 = nn.Parameter(torch.zeros(features))
self.eps = eps def forward(self, x):
mean = x.mean(-1, keepdim=True)
std = x.std(-1, keepdim=True)
return self.a_2 * (x - mean) / (std + self.eps) + self.b_2
最新文章
- eclipse按照svn插件
- Android开发自学笔记(Android Studio)—4.4 AdapterView及其子类
- iOS - UIColor
- c#和数据库技术基础之程序设计集散地-数据库
- Java:多个数求和
- Spring Autowiring by Constructor
- You Need This One Skill to Succeed in IT--reference
- ****JFinal 部署在 Tomcat 下推荐方法
- sql根据'/'截取最后的字符串
- Axure7.0.0.3155注册码
- NeHe OpenGL lession 4
- db2安装要设置tcp、ip
- HDU 1934 树状数组 也可以用线段树
- javascript的八张图
- Microsoft Visual Studio调试监视器(MSVSMON.EXE)未能启动
- Java I/O---IO流的规律小结
- 如何解决python升级后yum报错
- Asp.Net Core SignalR 与微信小程序交互笔记
- 利用selenium爬取京东商品信息存放到mongodb
- spring boot1.0 集成quartz 动态配置定时任务