Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

训练报错 #5

Closed
AtomicVar opened this issue Apr 9, 2018 · 10 comments
Closed

训练报错 #5

AtomicVar opened this issue Apr 9, 2018 · 10 comments

Comments

@AtomicVar
Copy link
Contributor

模型构建是成功的,但是训练一开始就报错,如下:

Invalid argument: Saw a non-null label (index >= num_classes - 1) following a null label, batch: 0 num_classes: 1415 labels:
Traceback (most recent call last):
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\client\session.py", line 1361, in _do_call
    return fn(*args)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\client\session.py", line 1340, in _run_fn
    target_list, status, run_metadata)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 516, in __exit__
    c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Saw a non-null label (index >= num_classes - 1) following a null label, batch: 0 num_classes: 1415 labels:
         [[Node: ctc/CTCLoss = CTCLoss[ctc_merge_repeated=true, ignore_longer_outputs_than_inputs=false, preprocess_collapse_repeated=false, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ctc/Log/_1203, ctc/ToInt64/_1205, ctc/ToInt32_2/_1207, ctc/ToInt32_1/_1209)]]
         [[Node: training/Adadelta/gradients/lstm_1/while/Softmax_grad/mul_1/_959 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_5057_training/Adadelta/gradients/lstm_1/while/Softmax_grad/mul_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](^_clooptraining/Adadelta/gradients/NextIteration_7/_252)]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".\SpeechModel.py", line 345, in <module>
    ms.TrainModel(datapath, epoch = 2, batch_size = 8, save_step = 1)
  File ".\SpeechModel.py", line 161, in TrainModel
    self._model.fit_generator(yielddatas, save_step)
  File "G:\asr\asrvenv\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "G:\asr\asrvenv\lib\site-packages\keras\engine\training.py", line 2224, in fit_generator
    class_weight=class_weight)
  File "G:\asr\asrvenv\lib\site-packages\keras\engine\training.py", line 1883, in train_on_batch
    outputs = self.train_function(ins)
  File "G:\asr\asrvenv\lib\site-packages\keras\backend\tensorflow_backend.py", line 2478, in __call__
    **self.session_kwargs)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\client\session.py", line 905, in run
    run_metadata_ptr)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\client\session.py", line 1137, in _run
    feed_dict_tensor, options, run_metadata)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\client\session.py", line 1355, in _do_run
    options, run_metadata)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\client\session.py", line 1374, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Saw a non-null label (index >= num_classes - 1) following a null label, batch: 0 num_classes: 1415 labels:
         [[Node: ctc/CTCLoss = CTCLoss[ctc_merge_repeated=true, ignore_longer_outputs_than_inputs=false, preprocess_collapse_repeated=false, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ctc/Log/_1203, ctc/ToInt64/_1205, ctc/ToInt32_2/_1207, ctc/ToInt32_1/_1209)]]
         [[Node: training/Adadelta/gradients/lstm_1/while/Softmax_grad/mul_1/_959 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_5057_training/Adadelta/gradients/lstm_1/while/Softmax_grad/mul_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](^_clooptraining/Adadelta/gradients/NextIteration_7/_252)]]

Caused by op 'ctc/CTCLoss', defined at:
  File ".\SpeechModel.py", line 342, in <module>
    ms = ModelSpeech(datapath)
  File ".\SpeechModel.py", line 44, in __init__
    self._model = self.CreateModel()
  File ".\SpeechModel.py", line 109, in CreateModel
    loss_out = Lambda(self.ctc_lambda_func, output_shape=(1,), name='ctc')([y_pred, labels, input_length, label_length])
  File "G:\asr\asrvenv\lib\site-packages\keras\engine\topology.py", line 619, in __call__
    output = self.call(inputs, **kwargs)
  File "G:\asr\asrvenv\lib\site-packages\keras\layers\core.py", line 663, in call
    return self.function(inputs, **arguments)
  File ".\SpeechModel.py", line 135, in ctc_lambda_func
    return K.ctc_batch_cost(labels, y_pred, input_length, label_length)
  File "G:\asr\asrvenv\lib\site-packages\keras\backend\tensorflow_backend.py", line 3950, in ctc_batch_cost
    sequence_length=input_length), 1)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\ops\ctc_ops.py", line 158, in ctc_loss
    ignore_longer_outputs_than_inputs=ignore_longer_outputs_than_inputs)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\ops\gen_ctc_ops.py", line 231, in _ctc_loss
    name=name)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\framework\ops.py", line 3271, in create_op
    op_def=op_def)
  File "G:\asr\asrvenv\lib\site-packages\tensorflow\python\framework\ops.py", line 1650, in __init__
    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

InvalidArgumentError (see above for traceback): Saw a non-null label (index >= num_classes - 1) following a null label, batch: 0 num_classes: 1415 labels:
         [[Node: ctc/CTCLoss = CTCLoss[ctc_merge_repeated=true, ignore_longer_outputs_than_inputs=false, preprocess_collapse_repeated=false, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ctc/Log/_1203, ctc/ToInt64/_1205, ctc/ToInt32_2/_1207, ctc/ToInt32_1/_1209)]]
         [[Node: training/Adadelta/gradients/lstm_1/while/Softmax_grad/mul_1/_959 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_5057_training/Adadelta/gradients/lstm_1/while/Softmax_grad/mul_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](^_clooptraining/Adadelta/gradients/NextIteration_7/_252)]]

是不是我的数据输入格式有问题?我的数据是这样的:

  1. dict.txt (来自清华数据集)
$ head dict.txt
SIL sil
<SPOKEN_NOISE> sil
啊 aa a1
啊 aa a2
啊 aa a4
啊 aa a5
啊啊啊 aa a2 aa a2 aa a2
啊啊啊 aa a5 aa a5 aa a5
阿 aa a1
阿 ee e1
  1. train.wav.lst
$ head train.wav.lst
A11_000 A11_0.wav
A11_001 A11_1.wav
A11_010 A11_10.wav
A11_100 A11_100.wav
A11_102 A11_102.wav
A11_103 A11_103.wav
A11_104 A11_104.wav
A11_105 A11_105.wav
A11_106 A11_106.wav
A11_107 A11_107.wav
  1. train.syllable.txt
$ head train.syllable.txt
A11_000 绿 是 阳春 烟 景 大块 文章 的 底色 四月 的 林 峦 更是 绿 得 鲜活 秀媚 诗意 盎然
A11_001 他 仅 凭 腰部 的 力量 在 泳道 上下 翻腾 蛹 动 蛇行 状 如 海豚 一直 以 一头 的 优势 领先
A11_010 炮眼 打好 了 炸药 怎么 装 岳 正 才 咬 了 咬牙 倏 地 脱去 衣服 光膀子 冲进 了 水 窜 洞
A11_100 可 谁知 纹 完 后 她 一 照镜子 只见 左下 眼睑 的 线 又 粗 又 黑 与 右侧 明显 不对称
A11_102 一进门 我 被 惊呆 了 这 户 名叫 庞 吉 的 老农 是 抗美援朝 负伤 回乡 的 老兵 妻子 长年 有病 家徒四壁 一贫如洗
A11_103 走出 村子 老远 老远 我 还 回头 张望 那个 安宁 恬静 的 小院 那个 使 我 终身 难忘的 小院
A11_104 二月 四日 住进 新 西门外 罗家 碾 王家 冈 朱自清 闻讯 特地 从 东门外 赶来 庆贺
A11_105 单位 不是我 老爹 开 的 凭什么 要 一 次 二 次 照顾 我 我 不能 把 自己 的 包袱 往 学校 甩
A11_106 都 用 草帽 或 胳膊肘 护 着 碗 趔 趔趄 趄 穿过 烂 泥塘 般 的 院坝 跑回 自己 的 宿 舍去 了
A11_107 香港 演艺圈 欢迎 毛阿敏 加盟 无线 台 与 华星 一些 重大 的 演唱 活动 都 邀请 她 出场 有几次 还 特意 安排 压轴 演出

感谢大神看一看我的问题,还有,可以加QQ联系吗?

@nl8590687
Copy link
Owner

nl8590687 commented Apr 9, 2018

应该是数据读入的问题,看来是THCHS30更新后的数据格式不一样了,我用的是之前的版本
0. train.word.txt

$ cat train.word.txt
A11_0 绿 是 阳春 烟 景 大块 文章 的 底色 四月 的 林 峦 更是 绿 得 鲜活 秀媚 诗意 盎然
A11_1 他 仅 凭 腰部 的 力量 在 泳道 上下 翻腾 蛹 动 蛇行 状 如 海豚 一直 以 一头 的 优势 领先
A11_10 炮眼 打好 了 炸药 怎么 装 岳 正 才 咬 了 咬牙 倏 地 脱去 衣服 光膀子 冲进 了 水 窜 洞
A11_100 可 谁知 纹 完 后 她 一 照镜子 只见 左下 眼睑 的 线 又 粗 又 黑 与 右侧 明显 不对称
A11_102 一进门 我 被 惊呆 了 这 户 名叫 庞 吉 的 老农 是 抗美援朝 负伤 回乡 的 老兵 妻子 长年 有病 家徒四壁 一贫如洗 
A11_103 走出 村子 老远 老远 我 还 回头 张望 那个 安宁 恬静 的 小院 那个 使 我 终身 难忘的 小院
  1. train.syllable.txt
$ cat train.syllable.txt
A11_0 lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de5 di3 se4 si4 yue4 de5 lin2 luan2 geng4 shi4 lv4 de5 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2 
A11_1 ta1 jin3 ping2 yao1 bu4 de5 li4 liang4 zai4 yong3 dao4 shang4 xia4 fan1 teng2 yong3 dong4 she2 xing2 zhuang4 ru2 hai3 tun2 yi4 zhi2 yi3 yi4 tou2 de5 you1 shi4 ling3 xian1 
A11_10 pao4 yan3 da2 hao3 le5 zha4 yao4 zen3 me5 zhuang1 yue4 zheng4 cai2 yao3 le5 yao3 ya2 shu1 de5 tuo1 qu4 yi1 fu5 guang1 bang3 zi5 chong1 jin4 le5 shui3 cuan4 dong4 
A11_100 ke3 shui2 zhi1 wen2 wan2 hou4 ta1 yi1 zhao4 jing4 zi5 zhi3 jian4 zuo3 xia4 yan2 jian3 de5 xian4 you4 cu1 you4 hei1 yu3 you4 ce4 ming2 xian3 bu2 dui4 chen4 
A11_102 yi2 jin4 men2 wo3 bei4 jing1 dai1 le5 zhe4 hu4 ming2 jiao4 pang2 ji2 de5 lao3 nong2 shi4 kang4 mei3 yuan2 chao2 fu4 shang1 hui2 xiang1 de5 lao3 bing1 qi1 zi5 chang2 nian2 you3 bing4 jia1 tu2 si4 bi4 yi4 pin2 ru2 xi3 
A11_103 zou3 chu1 cun1 zi5 lao2 yuan3 lao2 yuan3 wo3 hai2 hui2 tou2 zhang1 wang4 na4 ge5 an1 ning2 tian2 jing4 de5 xiao3 yuan4 na4 ge5 shi3 wo3 zhong1 shen1 nan2 wang4 de5 xiao3 yuan4 
  1. train.wav.lst
$ cat train.wav.lst
A11_0 wav/train/A11/A11_0.WAV
A11_1 wav/train/A11/A11_1.WAV
A11_10 wav/train/A11/A11_10.WAV
A11_100 wav/train/A11/A11_100.WAV
A11_102 wav/train/A11/A11_102.WAV
A11_103 wav/train/A11/A11_103.WAV
  1. dict.txt
    (这个文件其实是我自己做的,不是下载的数据集里的,收录了大约6000个常用汉字的拼音字典,并且还针对THCHS30数据集做了专门的处理)
a1	阿啊呵腌吖锕
a2	啊呵嗄
a3	啊呵
a4	啊呵
a5	阿啊呵
ai1	哀挨埃唉哎捱锿
ai2	呆挨癌皑捱矮
ai3	矮哎蔼霭嗳
ai4	爱碍艾唉哎隘暧嗳瑷嗌嫒砹
an1	安谙鞍氨庵桉鹌广厂
an3	俺铵揞埯
an4	案按暗岸黯胺犴

如果以上确认无误后,训练时仍出现错误,那么请尝试减小batch的大小。希望能帮助到你。

@AtomicVar
Copy link
Contributor Author

好的,感谢,我先试一试

@cnzdc
Copy link

cnzdc commented Apr 15, 2018

大神能不能分享下dict.txt 文件?感谢阿

@nl8590687
Copy link
Owner

To @cnzdc
dict.txt 文件已经添加到仓库中了,请查看。

@areyliu6
Copy link

areyliu6 commented Apr 17, 2018

不好意思 我剛接觸這塊領域
我下載了 THCSH30 資料是要先透過 kaldi 訓練聲學模型是嗎?
因為 train.wav.lst 等等的檔案 我在下載的THCSH30 包裡沒看到
我的壓縮包裡沒有train/doc & dev/doc & test/doc

我剛剛找到另一個資料源 http://data.cslt.org/thchs30/zip/doc.tgz
但是連結掛掉了

有詳細的執行步驟嗎? 或是可以有勞放上來嗎?
有勞大神了 謝謝

@nl8590687
Copy link
Owner

To @areyliu6
本倉庫的ReadMe的鏈接下載的THCHS30是新版的語音數據,你提到的那個鏈接是原來的版本,現在已經無法下載了,而新版的數據格式有點變化。我用的是原來的版本的數據,我這裡的train/dev/test以及doc等用的還是原來的格式,而且暫時還將繼續使用。不過可以通過自己編寫程序將新的數據格式做個處理,或者直接將代碼讀入數據的部分做一些改變即可。
我們可以通過卷積神經網絡、循環神經網絡等直接訓練聲學模型,而不需要使用kaldi,通過CTC還可以直接實現端到端。
希望能對你有幫助。

@areyliu6
Copy link

@nl8590687
謝大神解惑

就目前來看
我應該只需要實作出 .wav.lst .syllable.txt .word.txt
對吧?!

感恩

@nl8590687
Copy link
Owner

@areyliu6
是的

@areyliu6
Copy link

Hi @nl8590687
我試了一下 字詞錯誤率是100% 這樣是正常的嗎 哈哈

@nl8590687
Copy link
Owner

@areyliu6
不要着急,训练一段时间就好了,loss大约降到100+的时候就能看到了 :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants