ViT Slimming——联合结构搜索与Patch Selection

ViT Slimming是一种针对Transformer模型的结构优化方法,结合结构搜索和Patch selection,通过引入可微分的Soft mask进行多维度压缩,减少参数量和计算量。在Attention头和FFN层应用L1稀疏化,并在各层中消除低重要性的Patches。使用预训练权重初始化并采用Cosine衰减的学习率进行搜索训练。结构搜索完成后,根据Soft mask排序并裁剪,最后进行微调恢复模型精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Paper地址:https://arxiv.org/abs/2201.00814

GitHub链接:https://github.com/Arnav0400/ViT-Slim

Methods

ViT Slimming是一种简单、有效的结构精简化技术,通过结构搜索与Patch selection的结合,一方面实现了多维度、多尺度结构压缩,另一方面减少了Patch或Token的长度冗余,从而有效减少参数量与计算量。具体而言,为ViT结构中流动的Tensor定义了相应的Soft mask,在计算时将二者相乘,并在Loss function中引入Soft mask的L1正则约束:

ViT-Base-Patch16-224 是一种基于 Transformer 的视觉模型,其架构设计旨在处理图像分类任务。以下是 ViT-Base-Patch16-224 模型的主要组成部分及其结构描述: ### 模型概述 Vision Transformers (ViTs) 将输入图像分割成固定大小的 patches,并将其线性嵌入到向量中[^2]。对于 ViT-Base-Patch16-224 版本,具体参数如下: - 输入图像尺寸为 \(224 \times 224\) 像素。 - 图像被划分为 \(16 \times 16\) 大小的 patches,因此每张图片会被分成 \(196\) 个 patches (\(14 \times 14\))。 - 每个 patch 被展平并映射到一个维度为 \(768\) 的向量。 ### 架构细节 #### Patch Embedding 层 在该层中,每个 \(16 \times 16 \times 3\) 的 patch 都通过一个线性投影操作转换为长度为 \(768\) 的一维向量。随后会加入位置编码以保留空间信息[^2]。 #### Class Token 和 Positional Encoding 为了支持下游任务,在序列开头添加了一个可学习的 class token。此 token 受整个序列的影响并通过多头自注意力机制聚合全局信息。此外,还应用了绝对位置编码来表示各个 tokens 在原始图像中的相对位置关系[^2]。 #### Encoder Layers ViT 使用标准的 transformer 编码器堆叠而成,其中包含多个相同的 layer blocks。每一个 block 主要由两部分组成: 1. **Multi-head Self Attention Mechanism**: 这允许网络关注不同区域的重要特征组合。 2. **MLP Block**: 包含两个全连接层以及中间激活函数 GELU(Gaussian Error Linear Unit),用于增加非线性表达能力。 这些 layers 中间穿插 Layer Normalization 步骤以稳定训练过程,并采用残差连接促进梯度流动[^2]。 ```python class VisionTransformer(nn.Module): def __init__(self, image_size=224, patch_size=16, num_classes=1000, dim=768, depth=12, heads=12, mlp_dim=3072, dropout=0., emb_dropout=0.): super().__init__() self.patch_embedding = nn.Conv2d(in_channels=3, out_channels=dim, kernel_size=patch_size, stride=patch_size) ... ``` 上述代码片段展示了如何定义基本组件之一——patch embedding 层的部分实现方式[^3]。 ### 结论 综上所述,ViT-Base-Patch16-224 提供了一种新颖的方法将 transformers 应用于计算机视觉领域,利用一系列精心设计的技术手段实现了高效而强大的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值