深度学习:局部响应值归一化(Local Response Normalization,LRN)

局部响应归一化
Local Response Normalization(LRN)技术主要是深度学习训练时的一种提高准确度的技术方法。
LRN一般是在激活、池化函数后的一种方法。
在ALexNet中,提出了LRN层,对局部神经元的活动创建竞争机制,LRN仿造生物学上活跃的神经元对相邻神经元的抑制现象(侧抑制)。

Hinton在2012年的Alexnet网络中给出其具体的计算公式如下:

在这里插入图片描述
公式看上去比较复杂,但理解起来非常简单。i表示第i个核在位置(x,y)运用激活函数ReLU后的输出,n是同一位置上临近的kernal map的数目,N是kernal的总数。参数K,n,alpha,belta都是超参数,一般设置k=2,n=5,aloha=1*e-4,beta=0.75。

AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下。

(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
局部响应归一化Local Response NormalizationLRN)是一种常用的神经网络正则化方法,其作用是对神经元的输出进行归一化,使得其对输入的微小变化不敏感,从而提高模型的泛化能力。下面是使用Python实现局部响应归一化的示例代码: ```python import numpy as np def local_response_normalization(x, alpha=1e-4, k=2, beta=0.75, n=5): # x为输入数据,alpha为参数,k为参数,beta为参数,n为参数 # 在这里,我们假设输入数据为一个四维张量,即(batch_size, height, width, channels) # 首先计算分母部分 square = np.square(x) scale = k for i in range(n//2): scale += alpha * square[:, :, :, i:i+1] for i in range(n//2, x.shape[-1]-n//2): scale += alpha * (square[:, :, :, i-n//2:i-n//2+1] + square[:, :, :, i+n//2:i+n//2+1]) for i in range(x.shape[-1]-n//2, x.shape[-1]): scale += alpha * square[:, :, :, i:i+1] # 计算最终的输出 return x / np.power(scale, beta) ``` 在这里,我们假设输入数据为一个四维张量,即(batch_size, height, width, channels),其中: - alpha:一个超参数,控制归一化的强。 - k:一个超参数,控制归一化的强。 - beta:一个超参数,控制归一化的强。 - n:一个超参数,控制归一化局部范围大小。 实现中,我们先计算分母部分,然后计算最终的输出。其中,分母部分的计算需要分三种情况进行处理。最终的输出即为输入数据除以分母部分的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值