微调模型¶
本工程通过PyTorch
库进行卷积网络训练,其微调实现参考迁移学习
预训练模型¶
PyTorch
提供了AlexNet
的预训练模型
python文件¶
- 微调实现:
py/finetune.py
- 自定义微调数据集类:
py/utils/data/custom_finetune_dataset.py
- 自定义批量采样器类:
py/utils/data/custom_batch_sampler.py
- 辅助函数:
py/utils/util.py
训练参数¶
- 批量处理:每次训练
128
个图像,其中32
个正样本,96
个负样本 - 输入模型图像:缩放到
(227, 227)
,随机水平翻转,进行归一化操作 - 优化器
- 使用
SGD
:学习率为1e-3
,动量大小为0.9
- 随步长衰减:每隔
7
轮衰减一次,衰减因子为0.1
- 使用
- 迭代次数:
25
轮
训练结果¶
$ python finetune.py
...
...
Epoch 0/24
----------
train Loss: 0.1906 Acc: 0.9163
val Loss: 0.3662 Acc: 0.8692
Epoch 1/24
----------
train Loss: 0.1204 Acc: 0.9499
val Loss: 0.4081 Acc: 0.8701
Epoch 2/24
----------
train Loss: 0.0958 Acc: 0.9608
val Loss: 0.4002 Acc: 0.8719
Epoch 3/24
----------
train Loss: 0.0825 Acc: 0.9663
val Loss: 0.4505 Acc: 0.8725
Epoch 4/24
----------
train Loss: 0.0726 Acc: 0.9707
val Loss: 0.5031 Acc: 0.8697
Epoch 5/24
----------
train Loss: 0.0662 Acc: 0.9733
val Loss: 0.5340 Acc: 0.8681
Epoch 6/24
----------
train Loss: 0.0611 Acc: 0.9754
Qval Loss: 0.5102 Acc: 0.8714
Epoch 7/24
----------
train Loss: 0.0505 Acc: 0.9799
val Loss: 0.5529 Acc: 0.8725
Epoch 8/24
----------
train Loss: 0.0489 Acc: 0.9806
val Loss: 0.5540 Acc: 0.8728
Epoch 9/24
----------
train Loss: 0.0479 Acc: 0.9810
val Loss: 0.5818 Acc: 0.8717
Epoch 10/24
----------
train Loss: 0.0465 Acc: 0.9815
val Loss: 0.5819 Acc: 0.8727
Epoch 11/24
----------
train Loss: 0.0452 Acc: 0.9821
val Loss: 0.5765 Acc: 0.8732
Epoch 12/24
----------
train Loss: 0.0456 Acc: 0.9819
val Loss: 0.5957 Acc: 0.8725
Epoch 13/24
----------
train Loss: 0.0449 Acc: 0.9823
val Loss: 0.5857 Acc: 0.8724
Epoch 14/24
----------
train Loss: 0.0438 Acc: 0.9827
val Loss: 0.5943 Acc: 0.8723
Epoch 15/24
----------
train Loss: 0.0442 Acc: 0.9823
val Loss: 0.5874 Acc: 0.8730
Epoch 16/24
----------
train Loss: 0.0443 Acc: 0.9824
val Loss: 0.5950 Acc: 0.8720
Epoch 17/24
----------
train Loss: 0.0437 Acc: 0.9828
val Loss: 0.5945 Acc: 0.8729
Epoch 18/24
----------
train Loss: 0.0434 Acc: 0.9828
val Loss: 0.5975 Acc: 0.8725
Epoch 19/24
----------
train Loss: 0.0435 Acc: 0.9827
val Loss: 0.5900 Acc: 0.8730
Epoch 20/24
----------
train Loss: 0.0432 Acc: 0.9828
val Loss: 0.5922 Acc: 0.8730
Epoch 21/24
----------
train Loss: 0.0426 Acc: 0.9832
val Loss: 0.5977 Acc: 0.8720
Epoch 22/24
----------
train Loss: 0.0426 Acc: 0.9832
val Loss: 0.5974 Acc: 0.8726
Epoch 23/24
----------
train Loss: 0.0435 Acc: 0.9828
val Loss: 0.6019 Acc: 0.8718
Epoch 24/24
----------
train Loss: 0.0432 Acc: 0.9828
val Loss: 0.5996 Acc: 0.8718
Training complete in 461m 14s
Best val Acc: 0.873228
模型在训练过程中呈现过拟合现象,可考虑调整学习率、添加权重衰减以及更换优化器的方式:
- 学习率从
1e-3
调整为1e-4
- 添加
L2
权重衰减,衰减因子为1e-4
- 使用
Adam
替换SGD