raoyongming / DynamicViT

[NeurIPS 2021] [T-PAMI] DynamicViT: Efficient Vision Transformers with Dynamic Token Sparsification
https://dynamicvit.ivg-research.xyz/
MIT License
551 stars 69 forks source link

关于block中的残差通道 #10

Closed bestfleer closed 2 years ago

bestfleer commented 2 years ago

作者你好,我发现在vit.py 的block中 x = x + self.drop_path(self.attn(self.norm1(x), policy=policy)) x = x + self.drop_path(self.mlp(self.norm2(x))) 残差通道x在训练过程中并没有进行patch的裁剪,那是否会导致后面的block可以通过残差通道得到前面block中剪掉的patch信息呢?

raoyongming commented 2 years ago

你好,我们token稀疏化的方法和传统模型剪枝有所不同。在训练中,我们通过attention masking来阻止一个token与其他token的交互来实现剪枝的效果(在vit中,如果一个token和其他token都没有关系,那它就不会影响最终网络的输出,进而可以在测试时将其删去)。残差连接和MLP都没有包含和其他token交互的信息,所以不需要对残差通道和MLP进行裁剪。相关内容你可以参考论文Section 3.3