pprp / PyTorch-CIFAR-Model-Hub

Implementation of Conv-based and Vit-based networks designed for CIFAR.
MIT License
68 stars 13 forks source link

关于Vision Transformer类模型训练方式的疑问 #2

Closed falcon-xu closed 2 years ago

falcon-xu commented 2 years ago

您好,非常感谢您的代码分享,自己最近在做vision transformer,看了您的代码很有启发,遇到了几个问题想请教下。

  1. 以ViT和Swin Transformer为例,一般这两个的模型训练方式是先加载好预训练模型(通常是在imagenet上)后再在特定下游任务上进行finetune。 而该代码是针对cifar数据集进行训练,因此想问下readme中给出的ViT和swin在cifar上的结果是直接在cifar上train from scratch还是先加载好预训练模型后再在cifar上进行finetune得到的。我看代码中好像没有加载预训练模型的部分,因此有些疑惑

  2. 我看作者swin transformer的实现代码swin transformer官方代码好像不一样,请问有什么区别吗?

pprp commented 2 years ago

您好,感谢您的关注。 关于第一个问题,一般论文中采用的做法是将ImageNet上训练(224x224分辨率)的预训练权重迁移至CIFAR数据集中, 通过resize的方式将32x32分辨率resize到224x224,这样就可以进行finetune。

另外一种做法,也就是这个库的做法,修改了Vision Transformer的一些参数,使其适配32x32分辨率,采用从头开始训练的方式。

关于第二个问题,主要参考的是timm中有关swin transformer的实现,并且在其基础上适配了32x32分辨率。

falcon-xu commented 2 years ago

好的,了解了,非常感谢