DeepSpeech 调参备忘

最优解

迄今为止训练效果最好的一组参数集是:

1
python DeepSpeech.py --train_files /mnt/g/myowncorpus/dst.csv --dev_files /mnt/g/myowncorpus/dst.csv --export_dir /mnt/g/myowncorpus/ --checkpoint_dir /mnt/g/myowncorpus/checkpoints128 --alphabet_config_path /mnt/g/myowncorpus/alphabet.txt --dropout_rate 0.3 --early_stop True --n_hidden 128 --export_file_name hidden128 --export_author_id hidden128 --epochs 200 --export_model_version 0.0.3 --lm_alpha 0.6940122363709647 --lm_beta 4.777924224113021 --export_language cmn-Hans-CN --reduce_lr_on_plateau False --es_epochs 800 --test_files /mnt/g/myowncorpus/dst.csv --learning_rate 0.001 --beam_width 100
  • checkpoint_dir checkpoint 路径。checkpoint 是一种增量训练机制,允许保存之前最近的、最优的若干次训练结果,下一次加载后继续训练。

  • n_hidden 隐含层数量。对隐含层解释地比较通俗易懂的是这篇文章 。直接影响有 3 个:

1) 训练速度,越小越快

2) 模型文件尺寸,值越小文件尺寸越小

3) 训练效果,无绝对好坏,取决于训练集。我是从默认的 2048 一直减半到现在的 128 测试出来的最优值。

调整 hidden 必须从头训练,不能沿用之前的 checkpoint 。

  • alphabet_config_path 字母表。中文训练即训练集中出现的所有汉字的集合。

  • dropout_rate 随机丢掉隐含层的比例。

  • epochs 训练次数。不是越多越好,反而有可能变坏。像我现在数据集只有 113 条,最佳的训练次数是 200 次。

  • lm_alpha lm_beta 语言模型参数,取值是官方推荐值。

问题

总是有若干条目识别特别差,最典型的是这个:

语音:旺财关客厅窗帘

文本:旺财把客厅窗帘

语音:旺财开书房灯

文本:旺财把书房灯

调试了各种参数还是不能解决。怀疑跟数据集太小、相关录音录制得不清楚有关系。

参考

  1. 隐藏层:https://blog.csdn.net/JH0lmes/article/details/82777269

  2. CNN 入门讲解:什么是dropout?:https://zhuanlan.zhihu.com/p/77609689

  3. https://github.com/mozilla/DeepSpeech/releases/tag/v0.9.3

评论