https://github.com/pengzhiliang/Conformer

抽空测试了conformer,训练起来很简单,但是会遇到一个问题:

 Loss is nan, stopping training

 我用的默认配置,不知道为什么会有这个问题,知道的来探讨下。(再次测试了下,下载作者提供的模型作为预模型可以避免这个问题

1.数据准备

我直接拿了猫狗大战的数据来测试,下面是目录结构

一级目录

Conformer测试问题-LMLPHP

二级目录 ,注意二级目录就是按类别放图像就好了

Conformer测试问题-LMLPHP

 Conformer测试问题-LMLPHP

train 和 val是我手动划分的。下面是数据的百度网盘链接

链接:https://pan.baidu.com/s/1JQB96Ddu-PLVvK0YECVx4g 
提取码:z23o 
--来自百度网盘超级会员V6的分享

2.训练

训练其实很简单,只需要在参数部分改下面两个地方就好了,一个是数据的根目录,一个是存出的路径(新建一个目录),不给路径的话就会只训练,不产生模型。改完以后直接运行,也不用像源码链接一样在命令行输入一大串,当然你如果想的话也行,其实参数都在default里加就行,命令行不方便

Conformer测试问题-LMLPHP

 3.预测

预测和训练一样,只是改参数,那就别改来改去了,直接复制一份main.py改成inference.py把下面的参数改下。改完就会直接运行测试代码了,结果会给出val的精度

Conformer测试问题-LMLPHP

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%
11-23 06:47