https://github.com/pengzhiliang/Conformer
抽空测试了conformer,训练起来很简单,但是会遇到一个问题:
Loss is nan, stopping training
我用的默认配置,不知道为什么会有这个问题,知道的来探讨下。(再次测试了下,下载作者提供的模型作为预模型可以避免这个问题)
1.数据准备
我直接拿了猫狗大战的数据来测试,下面是目录结构
一级目录
二级目录 ,注意二级目录就是按类别放图像就好了
train 和 val是我手动划分的。下面是数据的百度网盘链接
链接:https://pan.baidu.com/s/1JQB96Ddu-PLVvK0YECVx4g
提取码:z23o
--来自百度网盘超级会员V6的分享
2.训练
训练其实很简单,只需要在参数部分改下面两个地方就好了,一个是数据的根目录,一个是存出的路径(新建一个目录),不给路径的话就会只训练,不产生模型。改完以后直接运行,也不用像源码链接一样在命令行输入一大串,当然你如果想的话也行,其实参数都在default里加就行,命令行不方便
3.预测
预测和训练一样,只是改参数,那就别改来改去了,直接复制一份main.py改成inference.py把下面的参数改下。改完就会直接运行测试代码了,结果会给出val的精度
val的精度情况如下:
Test: [ 0/11] eta: 0:04:46 loss: 0.1592 (0.1592) loss_0: 0.0810 (0.0810) loss_1: 0.0782 (0.0782) acc1: 100.0000 (100.0000) acc1_head1: 100.0000 (100.0000) acc1_head2: 100.0000 (100.0000) time: 26.0744 data: 19.5478 max mem: 2496
Test: [10/11] eta: 0:00:02 loss: 0.1602 (0.1684) loss_0: 0.0818 (0.0851) loss_1: 0.0785 (0.0833) acc1: 98.9583 (99.0000) acc1_head1: 100.0000 (99.2000) acc1_head2: 98.9583 (99.0000) time: 2.8352 data: 1.7771 max mem: 2496
Test: Total time: 0:00:31 (2.8660 s / it)
* Acc@heads_top1 99.000 Acc@head_1 99.200 Acc@head_2 99.000 loss@total 0.168 loss@1 0.085 loss@2 0.083
Accuracy of the network on the 1000 test images: 99.0%