17 - ConvMixer论文原理以及其PyTorch源码实现

75 篇文章 2 订阅

1. ConvMixer 论文

论文地址:Patches Are All You Need?

1.1 论文背景

作者在最近的研究中发现很多关于transformer的结构,发现transformer 中的结构效果非常的好,特别是vision-transformer 表现的异常的优秀,然而,由于transformer中自注意了层的平方运算导致计算量大,所以VIT提出了patch-embedding的方式,将一个图片打散成一个个块后组合成一个组。作者就开始怀疑,引起VIT模型好的到底是transformer结构还是patch-embedding。作者就对此进行研究,用一堆纯的卷积网络进行构建patch-embedding 操作,看看纯用卷积操作是否也行,或者比VIT更好,这样就形成了ConvMixer这篇论文。

1.2 论文结论

我们仅仅只用了标准的卷积神经网络就能独立的在空间融合(depthwise-convolution)和通道融合(pointwise-convolution),并且用卷积实现了patch-embeding 我们把这种网络叫做ConvMixer;受到了ViTs和MLP-mixers的启发,我们也因为用到了较大的卷积核得到了较大的性能提升。但是我们的模型和实验在设计的时候既没有最大化精度也没有得到好的速度,并且也没有得到好的超参数,但我们发现ConvMixers性能上优于VIT和MLP-Mixer,并且能和resnets,deits,resmlps等模型竞争;我们证明了通过简单的patch-embedding组成的“各向同性”结构会成为未来的深度学习的模板。patch-embedding允许一次性进行下采样,这样可以减少内部分辨率和有效增加感受野、从而能够更容易的混合远距离的空间信息。反正,tokenizing 输入和patch embedding 是一种非常有效和重要的方法。

2. ConvMixer 主要思路

2.1 normal-convolution

对于普通的卷积神经网络来说,我们是通过卷积核将输入的所有通道进行融合计算,如下图所示:

  • 重点:groups = 1
normal_conv = nn.Conv2d(in_channels=3,out_channels=1,kernel_size=5,groups=1)

在这里插入图片描述

2.2 depthwise-convolution

对于depthwise-convolution来说,主要是每一个通道channel单独进行计算,互补干涉

  • 重点:groups = in_channel = 3
depthwise_conv = nn.Conv2d(in_channels=3,out_channels=3,kernel_size=5,groups=3)

在这里插入图片描述

2.3 pointwise-convolution

不做空间计算,所以卷积核的大小为1x1,这样就可以就所有通道进行融合计算;这个好早就有了,感觉为了新颖换成了pointwise名字,噱头啊!

  • 重点:用 1 x 1 卷积核
pointwise_conv = nn.Conv2d(in_channels=3, out_channels=1, kernel_size=1)

在这里插入图片描述

2.4 ConvMixer结构

在这里插入图片描述

  • patch-embedding:
    将输入的X(c × n × n)通过一个卷积核Conv2d(kernel_size=p,stride=p)
    在这里插入图片描述
  • GELU:
    激活函数:GELUl论文
    应用高斯误差线性单位函数:
    G E L U ( x ) = x ∗ Φ ( x ) GELU(x)=x * \Phi(x) GELU(x)=xΦ(x)
    在这里插入图片描述

3. ConvMixer 代码

在这里插入图片描述

4. ConvMixer 小结

一个纯卷积的patch-embedding网络,思路很优秀,通过depthwise-convolution和pointwise-convolution来减少模型的参数

  • GELU激活函数
  • depthwise-convolution
  • pointwise-convolution
  • conv(kernel_size=p,stride=p)
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值