城西有家“一面之缘”面馆,老板老王做面三十年,厨房里只有一口锅、一把刀。没有烤箱、搅拌机,更没有米其林后厨常见的几十种香料,可每天排队的人能从店门口拐到街角。有人问他秘诀,老王只答:“面揉匀,汤调匀,剩下的交给时间。”在图像识别领域,也有一位“老王”——ConvMixer。深度学习架构这些年一直在做加法:Transformer 加注意力机制,ResNet 加深层数。而 ConvMixer 反其道而行,把图片切成小块、逐块揉合、统一调味,全场只有“卷积”这一种招式。最令人意外的是,这位“极简大厨”做出的成绩,足以和那些装备精良的复杂模型平起平坐。这篇文章,就带你走进 ConvMixer 的厨房,看看“少即是多”如何在图像分类中真正落地。
读懂 ConvMixer,你将掌握一种“用最小组件撬动高性能”的架构设计思路——理解空间混合与通道混合的分离哲学,能帮你在设计分类网络、对比新型模型时建立直觉判断,这是深度学习研究者不可或缺的底层认知。
可视化演示
动态演示ConvMixer的核心机制,通过全局/局部/动态/静态四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
ConvMixer:Conv ConvMixer的核心思想: Patch Embedding 核心机制可视化 ConvMixer整体架构与关键组件
极简理念
城西有家“一面之缘”面馆,老板老王做面三十年,厨房里只有一口锅、一把刀。没有复杂的烤箱、搅拌机,没有几十种香料,但每天排队的人能绕街角三圈。老王的哲学是:“招式不用多,把一招练到极致。”在深度学习图像分类的世界里,ConvMixer 就是这位老王。它诞生于 2022 年的论文《Patches Are All You Need》,全文的核心主张只有一句:不需要注意力机制,不需要位置编码,甚至不需要花哨的模块设计——只用最基础的卷积操作反复堆叠,就能在 ImageNet 上取得与 ViT 相当的成绩。
ConvMixer 的完整骨架可以用一条公式概括:图片先进过 Patch 嵌入变成小块特征图,然后重复堆叠 D 个结构完全相同的“混合块”,最后做全局平均池化并接一个线性分类头。这里的 D 和通道数 C 是仅有的两个超参数。没有 attention 里的 QKV 矩阵,没有位置编码,没有复杂的 multi-head 结构,所有信息交换都靠卷积完成。这种设计带来的直觉是:如果一个简单模型和一个复杂模型表现相当,那么复杂模型里那些“多余”的组件可能并不真正重要。
老王的菜单上永远只有一款面,客人却百吃不厌——ConvMixer 的“极简”不是简陋,而是把“混合信息”这一件事做到极致。这份克制正是它的设计哲学:复杂的架构往往是锦上添花,真正决定能力下限的,是基础组件是否被用到了刀刃上。
- 输入图像一张 H×W 像素、3 个颜色通道的图片
- 分块嵌入用步长等于卷积核大小的卷积把图切成小块并映射到 d 维嵌入
- 块堆叠D 个结构相同的混合块依次处理特征
- 全局平均池化把特征图每个位置的值取平均,浓缩成一条向量
- 分类头线性层把向量映射为类别得分,Softmax 得到概率
图像分块
做面第一步是切面。老王有一手好刀工:整块面团先擀平,然后“唰唰唰”切成大小完全相同的面段,每一段大小一致,下锅受热才均匀。图片处理同理。深度学习模型无法一口吞下整张 224×224 的图片,需要先切成若干小块,每块再映射成一个向量,这就是 Patch Embedding(图像分块嵌入)。
你可能在 ViT 里听过“图像分块”:ViT 把图片切成 16×16 的 patch,然后靠位置编码告诉模型“这是第几行第几列”。ConvMixer 的切法更朴素——它直接用一个带步长的卷积完成分块。卷积核大小为 p,步长也是 p,窗口移动时恰好不重叠,一张 H×W 的图就被切成了 (H/p)×(W/p) 个小块。每一步卷积同时完成“切块 + 映射到 d 维嵌入”,一个算子顶两个操作。更重要的是,卷积天然自带空间位置关系——卷积核扫过图像时,输出在哪一格就对应原图的哪一块,根本不需要额外的位置编码。
面段切多大,直接决定口感:切太大,面条粗硬难入味;切太小,一煮就糊。ConvMixer 常用 patch=7 或 8,224×224 的图变成 32×32 或 28×28 个“位置块”。这个粒度让后续 9×9 的卷积核,一次就能扫到原图上 63×63 像素的大区域——老王的刀法,切得刚刚好。
- 分块卷积核卷积核尺寸 p×p,把 3 个输入通道映射为 d 个嵌入通道
- 步长等于核大小窗口每次滑动 p 个像素,切出的块互不重叠
- 输出特征图尺寸高度和宽度都缩小为原来的 p 分之一
深度卷积
切好面段,老王开始揉面。秘诀是:每一根面条只跟它旁边紧挨着的面筋纠缠,不会突然跳到锅的另一头——这就是“空间局部性”。揉面的过程,对应深度学习里的深度卷积(Depthwise Convolution)。
传统卷积有个“坏习惯”:它同时做两件事。一方面,它看邻居像素,做空间上的混合;另一方面,它把 RGB 三个通道以及中间的隐藏通道全部加权重组,做通道上的混合。ConvMixer 认为,两件事混在一起做,既不透明也不高效。于是它把两者拆开:深度卷积只做空间混合。具体做法是:给每个通道配一个独立的 k×k 卷积核,只在当前通道内扫描邻域、加权求和。通道之间互不干扰,就像每一根面条都只跟自己附近的面筋打交道。这种“逐通道”的处理方式,也让卷积核数量从“输出通道 × 输入通道”锐减到“输入通道”,参数大幅节省。
老王揉面时力气很讲究:揉得太轻面没韧性,揉得太重面筋断裂。ConvMixer 把 k 设得很大——常用 9×9——一次揉捏能看到很大一片“面团”,再配合 D 层重复揉捏,等效感受野覆盖全图。空间混合这一步,揉得又透又不越界。
- 逐通道索引卷积核按通道编号 c 区分,各用各的核
- 局部邻域求和以 (i,j) 为中心,取 k×k 窗口内的值加权
- 输入输出同通道第 c 个通道的输出只由第 c 个通道的输入贡献
逐点卷积
面揉好了,接下来要浇卤汁。老王有一锅熬了三小时的秘制卤汁,里面有酱油、醋、花椒、八角。浇卤的动作很有特点:不管面条在哪个位置,浇的都是同一锅汁;每一根面条都被所有调料浸润。这就是逐点卷积(Pointwise Convolution)——用 1×1 卷积做通道混合。
深度卷积把空间信息揉开了,但每个通道仍然是“各自为政”。如果各个通道代表人脸的不同特征——有的负责边缘、有的负责纹理、有的负责颜色——那最终判断“这是猫”需要把这些线索汇总。逐点卷积在同一个空间位置上,把所有通道加权求和,生成新通道。它的卷积核是 1×1,完全没有空间视野,却能把 C 个通道的任意线性组合算出来。加上它,深度卷积负责“空间混合”,逐点卷积负责“通道混合”,两者合起来就是深度可分离卷积。计算量呢?1×1 卷积没有空间扩展,参数只有输入通道数乘以输出通道数,轻得像浇一勺卤汁。
好卤汁的标准是“每根面都入味”。逐点卷积就是那勺卤汁——它不改变面条的位置和形状(空间信息不动),却把所有风味(通道)均匀地融进每一根面里。浇完汁还不算完,老王还会再揉一轮:空间混合与通道混合交替进行,这就是 ConvMixer 每一个基础块的完整节拍。
- 遍历输入通道对同一位置的每个输入通道做加权累加
- 空间位置不动1×1 窗口只看自身像素,不引入邻域
- 生成新通道每个输出通道是全部输入通道的线性组合
块式结构
老王做一碗面的完整工序是:切面段 → 揉面 → 浇汁 → 醒面 → 再揉 → 再浇 → 出锅。ConvMixer 的“一碗面”——ConvMixer Block——也遵循这个节奏,而且每个工序都被精确设计过。首先,一个块由两个子块组成:第一个子块做深度卷积(空间混合),第二个子块做逐点卷积(通道混合)。每个子块内部都是“卷积 → GELU 激活 → 批归一化”三板斧,注意激活在归一化之前,这就是激活前置的设计。这里没有用 ReLU 而是 GELU,因为 GELU 的平滑曲线让梯度流更温和,就像醒面让面团放松一样。
更关键的设计是残差连接:每个子块的输出,都要“加上”子块的输入。这就好比老王每一次加工,都会从案板上留一块原样面团,等加工完再把加工过的和原样的合在一起。为什么要这么做?因为当模型堆到十几层深时,梯度在反向传播中容易消失——残差连接相当于给梯度留了一条“高速公路”,让信息可以无损地直达深层。这样即使某一层揉得过头,原始面团还在,模型也不会跑偏。整张图中,D 个这样的块依次串接,构成了 ConvMixer 的全部主体。
“留一手”的老智慧,在深度架构里变成了训练稳定的关键。老王的 20 层面条越叠越有嚼劲,ConvMixer 的 20 层块越堆越准——残差、GELU、BatchNorm 三者配合,让这个极简结构具备了“堆得深、训得稳”的底气。
\displaystyle x_{1} = x_{0} + \mathrm{BN}\big( \mathrm{GELU}( \mathrm{DWConv}(x_{0}) ) \big),\qquadx_{2} = x_{1} + \mathrm{BN}\big( \mathrm{GELU}( \mathrm{PWConv}(x_{1}) ) \big)- 空间混合子块深度卷积输出先激活、再归一化
- 残差合并一加工结果与输入相加,保留原始信息
- 通道混合子块逐点卷积同样先激活、再归一化
- 残差合并二再次加回当前状态,完成一个完整块
对比分析
美食界有三条路线:米其林餐厅,每道菜上桌前厨师都要和全桌其他菜“互相比较”再调整味道——这是 ViT,token 之间靠注意力全局交互;传统大酒店,几十个厨师各守一道工序,每人只做一点点改进——这是 ResNet,几十层 3×3 卷积接力;还有老王的面馆,只有一口锅一把刀,一道工序反复做到极致——这是 ConvMixer。三条路线做出来的菜,最终都能端上同一张餐桌。
与 ViT 相比,ConvMixer 最大的优势是计算复杂度。ViT 的注意力要做所有 token 两两之间的相似度计算,复杂度随 token 数的平方增长;而 ConvMixer 的深度卷积只看 k×k 邻域,复杂度随位置数线性增长,patch 化后 token 只有几百个时差距不明显,一旦输入分辨率变大,优势立刻拉开。与 ResNet 相比,ConvMixer 把“空间 + 通道”的混合拆成了两步,参数和计算量都大幅下降。标准卷积每个输出通道都要和每个输入通道配一个 k×k 核,而深度可分离卷积只需 C 个 k×k 核加 C×C 个 1×1 核。
三条路线各有拥趸,但老王用最少的厨具做到了米其林的星级。研究表明,在相同的训练预算(相同 epoch、相同数据增强、相同参数量)下,ConvMixer 与 ViT 的 ImageNet 精度几乎持平,而参数效率远高于同代 ResNet。这让人不得不重新思考:我们真的需要注意力吗?还是只需要一个把空间和通道分离混合的巧思?
- 标准卷积参数C 个输出通道 × C 个输入通道 × k×k 核,参数为 C²k²
- 深度可分离参数C 个 k×k 深度卷积核加上 C×C 个 1×1 逐点核
- 参数比值把比值拆成两项,当 C 远大于 k² 时第一项趋近于零
训练要点
好面还要好火候。老王常说:“面是死的,火候是活的。”意思是同样的面团,有人煮得夹生,有人煮得软烂,关键全在后期的火候控制。ConvMixer 的“火候”,就是它的训练配置。论文中特别强调:极简架构要发挥出全部实力,训练技巧绝不能含糊。这就像米其林评委说的:最简单的菜反而最考验基本功。
ConvMixer 论文给出了一套完整的“煮面配方”:数据增强方面,使用 RandAugment、MixUp、CutMix 的强组合,让模型看到更多样化的“面段”;优化器选用 AdamW 配合余弦退火学习率,前期大步快走、后期细腻收尾;损失函数使用标签平滑,防止模型对训练集过度自信;同时配合适当的权重衰减正则化。论文还着重指出,做对比实验时必须在相同的训练预算下进行——同样的 epoch、同样的增强、同样的 batch size——否则比较就失去了公平性。研究者发现,ConvMixer 在 ImageNet 上的训练精度略低于 ResNet,但测试精度反而相当,说明它的泛化差距更小,过拟合风险更低。
老王把火候拿捏得死死的:大火煮沸、小火慢炖、出锅前焖三分钟。ConvMixer 的“火候学”提醒我们,评价一个架构时不能只盯着模型结构,训练配方同等重要。极简架构配上精心调校的训练流程,才能在 ImageNet 这样的大考中拿到高分。
- 标签平滑把独热标签改造成带有小噪声的软标签,抑制过拟合
- 权重衰减对所有权重的平方和施加惩罚,约束参数不过大
- 泛化差距训练集与测试集精度的差值,衡量过拟合程度
性能表现
面馆开业三年,老王的生意额悄悄追平了隔壁米其林。数据不会说谎:ConvMixer 最激进的配置 ConvMixer-1536/20 在 ImageNet 上达到约 81.4% 的 Top-1 精度,与 ViT-B/16 基本持平;而与此同时,它的结构只有卷积,部署时无需特殊算子支持。小配置的 ConvMixer 在相同 FLOPs 预算下,也稳定优于同规模的 ResNet 系列。这就像用一把菜刀做出一桌宴席——工具看着朴素,结果却硬气。
ConvMixer 还表现出清晰的扩展规律。论文发现,模型精度与参数量在对数坐标下近似呈线性关系,即幂率定律;计算量方面,FLOPs 随深度 D 线性增长,却随宽度 C 的平方增长。原因在于每一层都要做 C 通道到 C 通道的逐点卷积,通道数翻倍,计算量翻四倍。这给实践者一个实用的取舍准则:想提精度,优先加宽度;想控预算,先砍通道数。此外,在推理吞吐量上,ConvMixer 与 ResNet 相当,虽然深度卷积的计算密度不如标准卷积,但它的实现简单、算子友好,在 CPU 和 GPU 上都能获得不错的实际速度。
老王不做花活,三年只微调了一次水面比例,口碑稳步上涨。ConvMixer 也没发明任何新算子,却凭借对“混合”二字的精准拆解,在精度、参数、速度的铁三角中取得了漂亮的平衡。少即是多——这不仅是一碗面的哲学,也是这个极简卷积架构给整个视觉领域上的一课。
- 精度-参数幂率两边取对数后为直线,说明参数越多精度越高但边际递减
- 深度贡献线性每增加一个块,计算量增加一个固定值
- 宽度贡献平方通道数翻倍,逐点卷积的乘积关系使计算量翻四倍
AI 应用场景
边缘设备上的工业质检分类
阶段:模型设计与端侧部署
解决的问题:传统质检方案要么用 ResNet 等重型网络,在嵌入式设备上推理慢、占用高;要么手写复杂专用结构,难以维护和复现。ConvMixer 只含标准卷积算子,任何平台的推理引擎都能原生支持,代码简洁到可以一个文件写完。
具体案例:某工厂需要区分 20 类零件表面缺陷。工程师用 ConvMixer 小配置(dim=128, depth=8),在 Jetson 边缘盒子上跑出 30ms 的推理延迟,精度相比此前用 MobileNet 的方案提升了 2.3 个百分点,且后续换产线调整类别时,只改动最后一行分类头即可。
Transformer 基线对照与消融实验
阶段:模型研究与论文实验
解决的问题:研究新架构时,reviewer 常质疑“复杂组件是否真的必要”。ConvMixer 提供了一个绝佳的“消融对照”:如果去掉注意力后的纯卷积模型能达到同精度,就能有力佐证“新组件贡献有限”。
具体案例:某研究团队提出一种新的 token 交互模块,实验中将注意力替换为 ConvMixer 的深度可分离卷积作为消融项,展示二者的精度差距。结果发现差距仅 0.4%,从而证明了组件冗余,也让论文结论更严谨可信。
高分辨率遥感图像的实时分类
阶段:特征提取与推理优化
解决的问题:ViT 的注意力复杂度随 token 数平方增长,高分辨率遥感图切出的 patch 数量巨大时非常吃力;ConvMixer 的深度卷积只随位置数线性增长,天然适配大图。
具体案例:某农业科技公司将航拍图切割成 512×512 的瓦片,用 ConvMixer 区分 12 类作物。相比 ViT-Small,推理吞吐量提升约 2 倍,GPU 显存占用下降约 40%,精度仅低 0.2 个百分点,在业务可接受范围内换来了显著的部署收益。
Python 演示
import torchimport torch.nn as nnimport torch.optim as optimimport torchvisionimport torchvision.transforms as transforms class Residual(nn.Module): def __init__(self, fn): super(Residual, self).__init__() self.fn = fn def forward(self, x): return self.fn(x) + x def convmixer_block(dim, kernel_size): depthwise = Residual(nn.Sequential( nn.Conv2d(dim, dim, kernel_size, groups=dim, padding=kernel_size // 2), nn.GELU(), nn.BatchNorm2d(dim), )) pointwise = Residual(nn.Sequential( nn.Conv2d(dim, dim, 1), nn.GELU(), nn.BatchNorm2d(dim), )) return nn.Sequential(depthwise, pointwise) class ConvMixer(nn.Module): def __init__(self, dim=64, depth=4, patch_size=7, kernel_size=9, num_classes=10): super(ConvMixer, self).__init__() self.patch_embed = nn.Conv2d(3, dim, patch_size, stride=patch_size) self.blocks = nn.Sequential( *[convmixer_block(dim, kernel_size) for _ in range(depth)] ) self.head = nn.Linear(dim, num_classes) def forward(self, x): x = self.patch_embed(x) x = self.blocks(x) x = x.mean(dim=(2, 3)) x = self.head(x) return x def train_cifar(model): transform = transforms.Compose([ transforms.Resize(32), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), ]) trainset = torchvision.datasets.CIFAR10( root='./data', train=True, download=True, transform=transform) loader = torch.utils.data.DataLoader( trainset, batch_size=64, shuffle=True) opt = optim.AdamW(model.parameters(), lr=1e-3) loss_fn = nn.CrossEntropyLoss() model.train() for epoch in range(1): total, correct = 0, 0 for xs, ys in loader: opt.zero_grad() out = model(xs) loss = loss_fn(out, ys) loss.backward() opt.step() total += ys.size(0) correct += (out.argmax(1) == ys).sum().item() print("epoch 1 acc: %.2f%%" % (100.0 * correct / total)) if __name__ == '__main__': model = ConvMixer(dim=64, depth=4) print(model) train_cifar(model)
return self.fn(x) + x残差合并:加工结果加回原始输入,给梯度留出直达深层的“高速公路”nn.Conv2d(dim, dim, kernel_size, groups=dim, padding=kernel_size // 2),深度卷积:groups 等于通道数,每个通道拥有独立卷积核,只做空间混合nn.Conv2d(dim, dim, 1),逐点卷积:1×1 卷积核负责通道混合,不改变空间尺寸self.patch_embed = nn.Conv2d(3, dim, patch_size, stride=patch_size)Patch 嵌入:核大小等于步长,一次卷积完成切块与嵌入x = x.mean(dim=(2, 3))全局平均池化:把每个通道的二维特征图压成一个标量,汇总全图信息opt = optim.AdamW(model.parameters(), lr=1e-3)AdamW 优化器:论文推荐的训练配置,配合余弦退火可稳定收敛
常见误区
误区我听说深度可分离卷积是 MobileNet 提出来的,ConvMixer 用它就是抄 MobileNet 的思路,没什么新意。
正解深度可分离卷积是 2013 年就存在的通用构建块,MobileNet 只是把它用于压缩计算量,目标是“更小更快”。ConvMixer 把同一构件用于“混合”:深度卷积用 9×9 大核负责空间混合,逐点卷积负责通道混合,且每段单独配残差。目标从“省计算”变成了“做分离式信息混合”,哲学不同,用法不同。
为何常见:MobileNet 是深度可分离卷积最出圈的推广者,初学者容易把“常见用法”误当成“发明权”,忽略同一构件在不同架构中的目的差异。
误区卷积的感受野是局部的,而注意力一次就能看全图,所以 ConvMixer 无法建模长距离依赖,上限一定低于 ViT。
正解ConvMixer 用了 9×9 大卷积核,配合 Patch Embedding 先把图缩小到 32×32 或 28×28,第一层卷积就能覆盖原图 63×63 像素;再经 D 层堆叠后等效感受野覆盖全图。实际上论文实验显示,相同的训练预算下 ConvMixer 与 ViT 精度基本持平,甚至泛化更好。
为何常见:人们习惯把“感受野大小”当作全局建模能力的唯一标尺,忽略了“多层堆叠扩大感受野”这一卷积网络的经典结论。
误区ViT 也要把图片切成 patch 再做嵌入,ConvMixer 也是这么干,所以两者在分块这一步没有区别,后续设计差异才是关键。
正解两者在“切块”这个动作上确实相似,但角色不同。对 ViT,Patch Embedding 只是预处理,真正的信息交互完全交给注意力;对 ConvMixer,Patch Embedding 是唯一的“分块”动作,后续不再有任何 token 化,空间混合完全由卷积完成。相同的起点,不同的旅程。
为何常见:只看到了接口相似(都是切 patch 映射嵌入),没有看到该组件在整体架构流水线中承担的职责差异。
误区模型组件越少,代表越“省事”,那么精度一定不如精心设计的复杂结构,用 ConvMixer 只是图省事。
正解ConvMixer 的结构简单不等于训练简单。论文用了完整的强数据增强(RandAugment、MixUp、CutMix)、AdamW + 余弦退火、标签平滑等一整套配方,任何一个环节缺失都会明显掉点。它的“极简”是组件数量少,但每个组件都被用到了极致;训练预算严格对齐时,它不输复杂模型。
为何常见:把“结构简单”与“工作简单”划等号,忽略了训练配置对最终性能的巨大影响,也忽视了论文在公平对比上的严谨设计。
误区卷积的部署生态成熟,深度可分离卷积参数又少,那么 ConvMixer 的推理速度一定远快于 ResNet 和 ViT。
正解参数量少并不直接等于速度快。深度卷积的计算密度低,在大通道数时访存开销占比高,实际吞吐量未必占优。论文实测显示,ConvMixer 的吞吐量与 ResNet 相当,但低于某些优化良好的 Transformer 实现。速度是工程问题,不能只看架构纸面上的 FLOPs。
为何常见:把“参数少”和“算得快”画等号,忽略了访存带宽、算子融合、硬件利用率等工程因素在推理中的决定作用。
面试题
Q1. ConvMixer 处理图像的第一步操作是什么?
- A.全局平均池化
- B.Patch嵌入分块← 正确答案
- C.注意力打分
- D.全连接分类
答案:B。ConvMixer 的流水线是“切块 → 混合 → 池化 → 分类”,第一步是 Patch Embedding,用带步长的卷积把图切成小块。全局池化和分类都在最后一端,注意力则根本不存在于 ConvMixer 中。
Q2. 深度卷积(Depthwise Conv)的典型特征是?
- A.每个通道独立核← 正确答案
- B.所有通道共享核
- C.卷积核尺寸为一
- D.通道间加权求和
答案:A。深度卷积中每个通道各配一个独立卷积核,只在当前通道内做空间混合,通道之间互不干扰。B 是普通卷积,C 是逐点卷积,D 是逐点卷积做的事。
Q3. 逐点卷积在数学上的本质是什么?
- A.最大池化操作
- B.1x1卷积求和← 正确答案
- C.3x3空洞卷积
- D.转置卷积操作
答案:B。逐点卷积就是 1×1 卷积,在同一空间位置上把所有输入通道加权求和生成新通道。它没有空间感受野,只负责通道混合。C 有空间视野,A 和 D 是池化与上采样的操作,都不符合。
Q4. 关于 ConvMixer 的残差连接,下列说法正确的是?
- A.只在深度卷积前
- B.双残差各配一路← 正确答案
- C.完全不使用残差
- D.末端统一加一次
答案:B。ConvMixer 块的深度卷积子块和逐点卷积子块各自带一条残差连接,每个子块都是“加工结果 + 原始输入”。这保证了梯度能顺畅回传,是模型能堆到 20 层以上的关键。
Q5. ConvMixer 实现 Patch Embedding 采用的方法是?
- A.用全连接层实现
- B.卷积核等于步长← 正确答案
- C.必须加位置编码
- D.输出保持原尺寸
答案:B。ConvMixer 用一个卷积核大小等于步长 p 的卷积完成 Patch Embedding,窗口不重叠地扫过图像,同时完成切块与线性嵌入。卷积天然保留位置关系,不需要位置编码。
Q6. 深度可分离卷积由哪两个部分构成?
- A.深度卷积提取← 正确答案
- B.逐点卷积融合← 正确答案
- C.自注意力加权
- D.全局池化替代
答案:AB。深度可分离卷积 = 深度卷积(逐通道空间混合)+ 逐点卷积(跨通道混合)。注意力与池化都不在它的构成里,C 是 Transformer 的组件,D 是汇总操作。
Q7. ConvMixer 相比 ViT 的核心区别在于?
- A.用注意力替代卷积
- B.卷积负责混合信息← 正确答案
- C.完全不使用分块
- D.去掉分类头结构
答案:B。ViT 用自注意力完成 token 间的信息交互,而 ConvMixer 完全用深度卷积与逐点卷积实现信息混合,且没有注意力与位置编码。两者都用 patch 分块,也都有分类头,C、D 错误。
Q8. 以下哪些是 ConvMixer 在 ImageNet 上取得高精度的关键因素?
- A.大核深度卷积← 正确答案
- B.双路残差子块← 正确答案
- C.强数据增强← 正确答案
- D.位置编码注入
答案:ABC。9×9 大核深度卷积提供了充足的感受野,两个子块各自的残差保证深层可训,RandAugment、MixUp、CutMix 等强增强极大抑制过拟合。ConvMixer 不使用位置编码,D 错误。
Q9. 在通道数 C 很大的情况下,深度可分离卷积参数约为标准卷积的多少?
- A.约核尺寸平方分之一← 正确答案
- B.和标准卷积完全一致
- C.约为标准卷积的两倍
- D.与输出通道数无关
答案:A。标准卷积参数为 C²k²,深度可分离卷积为 Ck² + C²,比值 = 1/C + 1/k²。C 很大时第一项趋近 0,约为 1/k²。9×9 核时约 1/81,这正是它轻量的根源。
Q10. 关于 ConvMixer 与 ResNet 的对比,以下说法正确的是?
- A.ResNet用标准卷积← 正确答案
- B.ConvMixer参数更省← 正确答案
- C.两者都不加残差
- D.二者都用注意力
答案:AB。ResNet 使用 3×3 标准卷积同时做空间与通道混合,而 ConvMixer 拆成两步混合、参数效率更高。两者都依赖残差连接,且都不使用注意力机制,C、D 错误。