当前位置:   article > 正文

卷积神经网络里的attention机制_pytorch 卷积+attention

pytorch 卷积+attention

参考:
https://arxiv.org/abs/1807.06521
https://arxiv.org/abs/1709.01507
https://zhuanlan.zhihu.com/p/65529934
https://zhuanlan.zhihu.com/p/32702350
https://github.com/luuuyi/CBAM.PyTorch
https://github.com/moskomule/senet.pytorch

1.CBAM: Convolutional Block Attention Module
2.Squeeze-and-Excitation Networks

先来谈SEnet吧,站在2020年看SEnet感觉就是个很容易实现的模块了
利用pytorch提供的nn.AdaptiveAvgPool2d和全连接层完成

原理的话,自己理解,在SEnet网络之前,通道间的信息交流只有通过1*1的卷积,但是1*1的卷积,感受野只有1啊,不能获取全局的信息,无法将通道间的信息权重进行筛选,这个时候作者就想到了一招,对整个特征图做一次全局的采样,获取整张特征图最大值作为该通道的代表,于是我们便得到一个1*1*C通道的特征tensor,再将整个tensor经过两个linear层,最后再过一个sigmoid层,这样就可以得到通道权重系数了

from torch import nn


class SELayer(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SELayer, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, ch
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/696008
推荐阅读
相关标签
  

闽ICP备14008679号