美文网首页
局部响应归一化层(LRN)

局部响应归一化层(LRN)

作者: LiBiscuit | 来源:发表于2019-02-02 18:01 被阅读131次

冒泡~二月啦!一年的十二分之一就过啦鸭 接下来该收收心 过春节啦!
于是来个年前最后一更~

局部响应归一化层(Local Response Normalization)

局部响应归一化层简称LRN,是在深度学习中提高准确度的技术方法。一般是在激活、池化后进行的一中处理方法,因在Alexnet中运用到,故做一下整理。

为什么要引入LRN层?

首先要引入一个神经生物学的概念:侧抑制(lateral inhibitio),即指被激活的神经元抑制相邻的神经元。归一化(normaliazation)的目的就是“抑制”,LRN就是借鉴这种侧抑制来实现局部抑制,尤其是我们使用RELU的时候,这种“侧抑制”很有效 ,因而在alexnet里使用有较好的效果。

归一化有什么好处?

1.归一化有助于快速收敛;
2.对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。

【补充:神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch 梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理的原因。
深度网络的训练是复杂的过程,只要网络的前面几层发生微小的改变,那么后面几层就会被累积放大下去。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直在发生变化,那么将会影响网络的训练速度。】

LRN的公式

公式的解释

首先这个公式中的a表示卷积层(包括卷积操作和池化操作)后的输出结果,这个输出结果的结构是一个四维数组[batch,height,width,channel],
【batch:批次数(每一批为一张图片)
height:图片高度,
width:图片宽度,
channel:通道数可以理解成一批图片中的某一个图片经过卷积操作后输出的神经元个数(或是理解成处理后的图片深度)。】
ai(x,y)表示在这个输出结构中的一个位置[a,b,c,d],可以理解成在某一张图中的某一个通道下的某个高度和某个宽度位置的点,即第a张图的第d个通道下的高度为b宽度为c的点。
a,n/2,k,α,β分别表示函数中的input,depth_radius,bias,alpha,beta,其中n/2,k,α,β都是自定义的,特别注意一下∑叠加的方向是沿着通道方向的,即每个点值的平方和是沿着a中的第3维channel方向的,也就是一个点同方向的前面n/2个通道(最小为第0个通道)和后n/2个通道(最大为第d-1个通道)的点的平方和(共n+1个点)。而函数的英文注解中也说明了把input当成是d个3维的矩阵,说白了就是把input的通道数当作3维矩阵的个数,叠加的方向也是在通道方向
公式看上去比较复杂,但理解起来并不难。
i表示第i个核在位置(x,y)运用激活函数ReLU后的输出,n是同一位置上临近的kernal map的数目,N是kernal的总数。
参数K,n,alpha,belta都是超参数
一般设置k=2,n=5,alpha=1Xe-4,beta=0.75
来个示意图:


补充一下代码:

import tensorflow as tf
import numpy as np
x = np.array([i for i in range(1,33)]).reshape([2,2,2,4])

y = tf.nn.lrn(input=x,depth_radius=2,bias=0,alpha=1,beta=1)
with tf.Session() as sess:
    print(x)
    print('#############')
    print(y.eval())

结果:


结果解释:


具体参考(https://blog.csdn.net/yangdashi888/article/details/77918311

参考资料(https://blog.csdn.net/hduxiejun/article/details/70570086

今天又是一个合格的搬运工啦
Ending~
提前的过年愉快!
诸事顺利鸭!

相关文章

  • LRN

    LRN全称为Local Response Normalization,即局部响应归一化层,LRN函数类似Dropo...

  • tf.nn.lrn(深度学习的局部响应归一化LRN)

    tensorflow下的局部响应归一化函数tf.nn.lrn

  • 局部响应归一化层(LRN)

    冒泡~二月啦!一年的十二分之一就过啦鸭 接下来该收收心 过春节啦!于是来个年前最后一更~ 局部响应归一化层(Loc...

  • Tensorflow的LRN是怎么做的

    LRN全称是local response normalization,局部响应归一化,想了解原理的点这个AlexN...

  • AlexNet论文笔记

    网络结构 AlexNet包含5个卷积层和3个全连接层,此外还包含一些max pooling层、LRN层(局部响应归...

  • Local Response Normalization

    Local Response Normalization 局部响应归一化。 出处:ImageNet Classifi...

  • 2018-08-07AlexNet实现详解

    A结构 B代码 A结构: AlexNet结构为8层。(不包含LRN与池化层) conv1+LRN&pool1 --...

  • caffe LRN层

    在通道间归一化模式(ACROSS_CHANNELS)中,局部区域范围在相邻通道间,但没有空间扩展(即尺寸为 loc...

  • BN(Batch Normalization)层的详细介绍

    1.BN层的前世:LRN层( Local Response Normalization) 没有提出BN层之前,Al...

  • 局部归一化

    memm模型存在局部归一化的问题,导致预测序列倾向于选择那些转移状态(transfer)比较少的节点,但是如果不归...

网友评论

      本文标题:局部响应归一化层(LRN)

      本文链接:https://www.haomeiwen.com/subject/jhissqtx.html