调用FastAI的vision_learner构建ResNet18时是否自动执行迁移学习?
FastAI vision_learner 默认迁移学习行为说明
你当前编写的代码默认会自动执行迁移学习相关初始化操作,不符合你当前阶段不能使用迁移学习的要求。
你使用的代码片段如下:
learn = vision_learner(dls, models.resnet18)
接口默认行为
vision_learner 提供了控制预训练权重加载的pretrained参数,该参数的默认值为True,在你不显式指定参数值的情况下,调用接口时会自动完成以下迁移学习相关逻辑:
- 自动下载ResNet18在ImageNet数据集上训练得到的预训练权重,加载到模型的骨干网络部分
- 自动替换ResNet18原生的全连接分类层,新分类层的输出维度会自动匹配你传入的
dls数据集对应的类别数量 - 默认冻结骨干网络的所有参数,后续训练初期只会更新分类头参数,适配迁移学习的常规训练流程
禁用迁移学习的修改方案
如果需要完全关闭迁移学习,使用随机初始化的权重从头训练模型,只需要在调用时显式传入pretrained=False即可,修改后的代码如下:
learn = vision_learner(dls, models.resnet18, pretrained=False)
设置该参数后,模型所有层的权重都会采用随机初始化,不会加载任何在其他数据集上预训练得到的参数,也不会自动做参数冻结等迁移学习相关配置,完全满足你当前阶段的任务要求。
内容的提问来源于stack exchange,提问作者M5RKED
相关产品推荐
相关产品推荐

