我可以用完全不同的体系结构来训练我的预训练模型吗



我已经在Pytorch上用我的自定义数据集训练了一个预训练的ResNet18模型,并想知道我是否可以传输我的模型文件来训练另一个具有不同架构的模型,例如ResNet50。我知道我必须相应地保存我的模型(在这里的另一篇文章中解释得很好(,但这是一个我以前从未想过的问题
我计划使用更高级的模型,如VisionTransformers(ViT(,但我不知道是必须从预先训练的ViT开始,还是可以将以前的模型文件用作预先训练的模型来训练ViT

示例场景:ResNet18 --> ResNet50 --> Inception v3 --> ViT

我最好的猜测是,由于重量、神经元和层结构的数量,这是不可能的,但如果我错过了关键点,我很乐意听到
谢谢!

在只有层数不同的模型(Resnet-18和Resnet-50(之间,已经根据较小模型层的权重初始化了较大模型的一些层。相反,您可以通过获取规则间隔的层的子集来截断较大的模型,并初始化较小的模型。在这两种情况下,如果你希望取得半像样的表现,你最终需要对一切进行再培训。

使用大不相同的架构(视觉转换器与细胞神经网络(的全部目的是从输入中学习不同的特征,并解锁新的语义理解水平。最近的模型,如BeiT,也使用了新的自我监督训练方案,与经典的ImageNet预训练无关。使用来自另一个模型的经过训练的权重会违背这一点。

话虽如此,如果你想使用ViT,为什么不从HuggingFace上可用的预训练权重开始,并根据你用来训练ResNet50的数据对其进行微调呢?

最新更新