LRN在caffe和tensorflow中的不同实现

本文详细解析了LocalResponseNormalization层的工作原理及其在TensorFlow与Caffe中的实现差异。该层通过在通道维度上应用抑制效应来规范化特征图,有助于提高模型泛化能力。文章对比了两个框架中该层的不同配置参数及其计算公式。

Local Response Normalization,其作用是实现“侧抑制”。

bix,y=aix,y/(b+αj=max(0,ir)min(i+r,n1)a2x,y)β

在channel维度上进行抑制,从公式中可以看出ax,y周围2*r+1个神经元的激活会对ax,y产生抑制效果。
在tensorflow和caffe中由不同的实现公式
tensorflow中的实现方式就是上述公式的实现,文档中是这样解释的:
sqr_sum[a, b, c, d] =sum(input[a, b, c, d - depth_radius : d + depth_radius + 1] ** 2)
output = input / (bias + alpha * sqr_sum) ** beta

local_response_normalization(
    input,
    depth_radius=5,
    bias=1,
    alpha=1,
    beta=0.5,
    name=None
)

其参数depth_radius为公式中的r,bias为b。
而caffe中略有不同,其实现公式为:

bix,y=aix,y/(1+α/mj=max(0,im/2)min(i+m/2,n1)a2x,y)β

其中的m对应第一个公式中的2*r+1
caffe参数中的local_size对应m,所以这个参数是和tensorflow的depth_radius是不同的,其关系为local_size = 2*depth_radius + 1,因此local_size必须为奇数。
而且实际上平方和项的系数是不同的,tensorflow的系数就是函数的参数alpha,而caffe的系数实际上要将定义的alpha参数除以local_size的大小

总结一下tensorfow和caffe的两点不同
1.local_size和depth_radius不是对应的,其关系为local_size = 2*depth_radius + 1
2.alpha的定义caffe要在实际的系数上乘以local_size
因此caffe中的模型不能轻易得将参数直接拿过来用,需要做一下转换。当然如果用caffe-tensorflow的话参数关系会自动转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值