FastAI learner.fine_tune()接口API文档及参数信息查询
关于FastAI中
learner.fine_tune()的说明 fine_tune()是FastAI Learner类的核心方法,用于快速完成预训练模型的微调流程——它会先冻结预训练模型的主体层,仅训练新增的分类头,随后解冻部分或全部层进行联合训练,是FastAI简化训练流程的关键函数。
可接收参数说明
epochs:必填整数,示例中的3就是这个参数,表示整个微调流程的总训练轮数(默认会拆分1轮训练分类头,剩余轮数用于联合训练)base_lr:可选浮点数,默认值2e-3,训练分类头时的学习率,联合训练时的学习率会自动设置为该值的1/10freeze_epochs:可选整数,默认值1,单独训练分类头的轮数lr_mult:可选浮点数,默认值10,联合训练时主体层与分类头的学习率比例(主体层学习率=base_lr/lr_mult)pct_start:可选浮点数,默认值0.3,学习率预热阶段占总训练轮数的比例div:可选浮点数,默认值5,学习率调度器中最大学习率与最小学习率的比值kwargs:可选字典,可传入fit_one_cycle()支持的其他参数(比如cbs回调函数、wd权重衰减等)
代码示例对应说明
你提供的代码:
learner.fine_tune(3)
等价于:
- 冻结模型主体层,用默认学习率训练分类头1轮
- 解冻全部模型层,用
base_lr=2e-3、主体层学习率2e-4继续训练2轮,全程使用one-cycle学习率调度
额外说明
- 该方法的源码属于
Learner类的成员方法,本质是封装了freeze()、fit_one_cycle()、unfreeze()、fit_one_cycle()这几个步骤 - 如果需要更精细的控制,可以手动拆分这几个步骤,比如自定义冻结层范围、调整不同阶段的学习率等
内容的提问来源于stack exchange,提问作者user2458922
相关产品推荐
相关产品推荐

