LRN在caffe和tensorflow中的不同实现

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的话参数关系会自动转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值