caffe详解之归一化层


从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识!

 

LRN 参数配置

layer {
  name: "norm1"
  type: "LRN"
  bottom: "conv1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}

LRN说明

示意图

 

公式

 

意义

LRN操作主要目的是在深度上进行平滑操作,使得数据在深度层面上有一定的联系。

应用

LRN层是在AlexNet网络中提出来的,但是因为其计算的复杂度和后期的效果并不理想,在后面的网络中基本上抛弃的LRN的归一化方法。

 

Batch Norm 参数配置

layer {
    bottom: "conv1"
    top: "conv1"
    name: "bn_conv1"
    type: "BatchNorm"
    batch_norm_param {
        use_global_stats: true
    }
}

layer {
    bottom: "conv1"
    top: "conv1"
    name: "scale_conv1"
    type: "Scale"
    scale_param {
        bias_term: true
    }
}
message BatchNormParameter {
  // 如果为真,则使用保存的均值和方差,否则采用滑动平均计算新的均值和方差。
  // 该参数缺省的时候,如果是测试阶段则等价为真,如果是训练阶段则等价为假。
  optional bool use_global_stats = 1;

  // 滑动平均的衰减系数,默认为0.999
  optional float moving_average_fraction = 2 [default = .999];

  // 分母附加值,防止除以方差时出现除0操作,默认为1e-5
  optional float eps = 3 [default = 1e-5];
}

Batch Norm 说明

公式

 

意义

在深度神经网络的训练过程中,先前层参数的调整会导致之后每一层输入值的分布发生变化,这种现象会使得模型的训练变得复杂。因为分布均匀且统一的数据往往更加容易使得算法训练出高准确率的模型Batch Norm主要借鉴的是白化的思想,目的是将数据尽量维持在方差为1,均值为0的分布上。因为数据的总量十分庞大,我们无法计算出整个数据集的均值与方差,因此采用Batch的思想,分块的进行白化处理Batch Norm的精华体现在最后一个公式上,白化之后进行拉伸与平移,也就是对数据分布进行修正。并且拉伸与平移的系数是通过训练得到的,这样,我们将batch在整个数据集的整体分布状态也学习了出来,防止以偏概全!下图可以清晰的看出,加入Batch Norm使得每一层的数据更够有效且均匀的传递到下一层中去。

 

应用

Batch NormResNet网络和Inception-v2Inception-v3Inception-v4中均有用到。

 

 

参考

批标准化 (Batch Normalization)
https://morvanzhou.github.io/tutorials/machine-learning/ML-intro/3-08-batch-normalization/
caffe层解读系列——BatchNorm


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值