1 模型微调的情况
冻结的卷积层,训练分类器,分类器训练好后将冻结的卷积层解冻,允许卷积层的参数计算梯度并优化。
2 步骤:
(1)冻结预训练模型的卷积层,训练分类器,
(2)分类器训练完毕后,解冻卷积层,继续训练。卷积层毕竟是通用的参数并不针对当前问题,所以解冻后继续训练,针对当前问题的特征提取将更加准确。
注意: 微调设置较小的学习率,防止梯度变化过大,影响收敛
分类器训练好后接.....
for param in model.parameters():
param.requires_grad = True
extend_epochs = 15
optimizer = torch.optim.Adam(model.parameters(), lr=0.00001) #微调设置较小的学习率,防止梯度变化过大,影响收敛
train_loss_, test_loss_, train_acc_, test_acc_ = fit(extend_epochs,
train_dl,
test_dl,
model,
loss_fn,
optimizer)