注意力归一化

摘要
基于batchnormal研究人员们开发出了GroupNormal和SwitchableNormal等方法来从不同的角度考虑minibatch内的均值和方差以及特征归一化,随后进行可学习的逐通道的仿射变换。而局域序列-激活(SE)的逐通道特征注意力方法则着重校准逐通道的特征。在这篇文章中,研究人员提出了一种联合特征归一化和特种通道注意力的方法AttentiveNoramal,将序列激活的优点集成到BN中。AN为每个通道学习小规模的尺度和偏置参数,并将权重的和用于最终的仿射变换。这些权重浴室里相关,并基于逐通道的注意力来学习,基于SE的思想补充了BN的不足。


#Pytorch实现AttentionNorm

class AttenNorm(nn.BatchNorm2d):
    def _init_(self,C,K,eps,momentum,running):
        super(AttenNorm,self)._init_(C,eps = eps,momentum=momentum,affine=False,track_running_)stats=running)
        self.gamma = nn.Parameter(torch.Tensor(K,C))
        self.beat = nn.Parameter(torch.Tensor(K,C))
        self.avgpool = nn.Adaptiveavgpool2d(1)
        self.fc = nn.Linear(C,K)
        self.sigmoid = nn.Sigmoid()
        
    def forward(self,x):
    output = super(AttenNorm,self).forward(x)
    size = output.size()
    b,c,_,_, = x.size()
    y = self.avgpool(x).view(b,c)
    y = self.fc(y)
    y = self.sigmoid(y)
    gamma = y@self.gamma
    beta = y@self.beta
    gamma = weight.unsqueeze(-1).unsqueeze(-1).expand(size)
    beta = bias.unsqueeze(-1).unsqueeze(-1).expand(size)
    return gamma*output + beta
    
    
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值