wenet-e2e / wekws

Production First and Production Ready End-to-End Keyword Spotting Toolkit
Apache License 2.0
444 stars 111 forks source link

Loss didn’t drop when training FSMN_CTC. #155

Open LiHangyu521 opened 7 months ago

LiHangyu521 commented 7 months ago

Hi, when I trained the FSMN_CTC model on the Hi_xiaowen dataset, the loss didn't drop. I am asking whether the training process is not stable. What could I do to make it converage? 你好,当我小问数据集上训练FSMN_CTC模型时,模型的loss一直不下降,我想问一下是否训练过程是不稳定的,以及我是否应该重新训练,是否需要调整config文件,如调整学习率之类的操作。请问您是否有遇到这种情况,该如何处理,谢谢您!下边是我训练过程的一个截图: image

duj12 commented 7 months ago

Hi, when I trained the FSMN_CTC model on the Hi_xiaowen dataset, the loss didn't drop. I am asking whether the training process is not stable. What could I do to make it converage? 你好,当我小问数据集上训练FSMN_CTC模型时,模型的loss一直不下降,我想问一下是否训练过程是不稳定的,以及我是否应该重新训练,是否需要调整config文件,如调整学习率之类的操作。请问您是否有遇到这种情况,该如何处理,谢谢您!下边是我训练过程的一个截图: image

这个是正常的哈,因为模型比较小,所以loss不会降到很低,只需要关注模型在正例(有关键词的数据)上的效果就行,可以用测试数据跑一下测试,看看检出和误检。

LiHangyu521 commented 7 months ago

Hi, when I trained the FSMN_CTC model on the Hi_xiaowen dataset, the loss didn't drop. I am asking whether the training process is not stable. What could I do to make it converage? 你好,当我小问数据集上训练FSMN_CTC模型时,模型的loss一直不下降,我想问一下是否训练过程是不稳定的,以及我是否应该重新训练,是否需要调整config文件,如调整学习率之类的操作。请问您是否有遇到这种情况,该如何处理,谢谢您!下边是我训练过程的一个截图: image

这个是正常的哈,因为模型比较小,所以loss不会降到很低,只需要关注模型在正例(有关键词的数据)上的效果就行,可以用测试数据跑一下测试,看看检出和误检。

非常感谢您的回复!! 验证集的acc很低,在测试集上,使用stream_score_ctc和score_ctc都无法检出到关键词,检出率为0 , 并没有误检,全部都检测成了负样本。 请问是否是模型的base.pt的问题,我在modelscope上手动下载的base.pt

duj12 commented 7 months ago

是不是刚开始训练? 我看你的截图应该是才开始第一轮训练吧?

LiHangyu521 commented 7 months ago

是不是刚开始训练? 我看你的截图应该是才开始第一轮训练吧?

已经训练了10个epoch了,一直没有什么变化,训练集的acc稳定在30%多。

duj12 commented 7 months ago

是不是刚开始训练? 我看你的截图应该是才开始第一轮训练吧?

已经训练了10个epoch了,一直没有什么变化,训练集的acc稳定在30%多。

你这里用的是ctc的训练脚本吗?还是说用fsmn模型,但是损失函数用的是maxpooling?

LiHangyu521 commented 7 months ago

是不是刚开始训练? 我看你的截图应该是才开始第一轮训练吧?

已经训练了10个epoch了,一直没有什么变化,训练集的acc稳定在30%多。

你这里用的是ctc的训练脚本吗?还是说用fsmn模型,但是损失函数用的是maxpooling?

我使用的是run_fsmn_ctc.sh的训练脚本。

LiHangyu521 commented 7 months ago

是不是刚开始训练? 我看你的截图应该是才开始第一轮训练吧?

已经训练了10个epoch了,一直没有什么变化,训练集的acc稳定在30%多。

你这里用的是ctc的训练脚本吗?还是说用fsmn模型,但是损失函数用的是maxpooling?

当时我使用run.sh来复现DSTCN+maxpooling_loss时,模型可以很快收敛。可以复现 但当我使用run_fsmn_ctc.sh来复现FSMN+CTC_loss时,模型的loss一直不会下降。

duj12 commented 7 months ago

但当我使用run_fsmn_ctc.sh来复现FSMN+CTC_loss时,模型的loss一直不会下降。

你这上面训练过程的acc是自己改了一下代码统计的对吧,原本代码中训练过程是不统计acc的哈。 可以等训练结束再看看。10个epoch的模型我也没测过,这个数据量很小,训练一天差不多就可以结束。到时候再测测看吧

LiHangyu521 commented 7 months ago

你这上面训练过程的acc是自己改了一下代码统计的对吧,原本代码中训练过程是不统计acc的哈。 可以等训练结束再看看。10个epoch的模型我也没测过,这个数据量很小,训练一天差不多就可以结束。到时候再测测看吧

是的,是我自己改动了一下代码统计acc,等训练结束以后,我再重新测试一下结果。我想请问一下作者,你们目前还能用这个run_fsmn_ctc.sh脚本复现出效果,在训练的时候loss大概在多少,想了解一下是否是我代码的问题。

duj12 commented 7 months ago

你这上面训练过程的acc是自己改了一下代码统计的对吧,原本代码中训练过程是不统计acc的哈。 可以等训练结束再看看。10个epoch的模型我也没测过,这个数据量很小,训练一天差不多就可以结束。到时候再测测看吧

是的,是我自己改动了一下代码统计acc,等训练结束以后,我再重新测试一下结果。我想请问一下作者,你们目前还能用这个run_fsmn_ctc.sh脚本复现出效果,在训练的时候loss大概在多少,想了解一下是否是我代码的问题。

具体数值我忘了。可以直接在小问例子的readme里面找一下,有fsmn训练好的checkpoint,是按照训练脚本跑完输出的平均模型,下载了跑一下就知道啦。

LiHangyu521 commented 7 months ago

具体数值我忘了。可以直接在小问例子的readme里面找一下,有fsmn训练好的checkpoint,是按照训练脚本跑完输出的平均模型,下载了跑一下就知道啦。

您好,我已经训练结束,仍然loss没有下降,我发现以下的几个问题:

  1. run_fsmn_ctc.sh脚本运行的模型,在训练80个epoch结束后,loss仍然没有下降(如下图)
  2. run_ctc.sh 脚本运行的模型,loss也没有下降。
  3. 评测了官方给出的训练好的模型,官方给的模型在评测score时都是正常的,准确率检出率都很高。

我想知道可能会有什么原因导致的,是否可能是CTC_loss的代码有问题

image

duj12 commented 7 months ago

检查一下你做的代码改动 另外检查一下数据哈。看看是不是正负例数据都正常,必须要是音频和对应文本内容而不是0,+-1的类别标签。 代码我在其他超级小的数据集上都验证过 没问题的哈

lvchigo commented 6 months ago
Ostarsion commented 1 month ago

题主解决这个问题了吗,按照run_fsmn_ctc.sh脚本运行情况是相同的

xing-bing commented 1 month ago

具体数值我忘了。可以直接在小问例子的readme里面找一下,有fsmn训练好的checkpoint,是按照训练脚本跑完输出的平均模型,下载了跑一下就知道啦。

您好,我已经训练结束,仍然loss没有下降,我发现以下的几个问题:

  1. run_fsmn_ctc.sh脚本运行的模型,在训练80个epoch结束后,loss仍然没有下降(如下图)
  2. run_ctc.sh 脚本运行的模型,loss也没有下降。
  3. 评测了官方给出的训练好的模型,官方给的模型在评测score时都是正常的,准确率检出率都很高。

我想知道可能会有什么原因导致的,是否可能是CTC_loss的代码有问题

image

题主这个问题解决了吗