PaddlePaddle / PaddleSpeech

Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.
https://paddlespeech.readthedocs.io
Apache License 2.0
10.98k stars 1.83k forks source link

数据类型有错误哦 #2114

Closed Doubledongli closed 2 years ago

Doubledongli commented 2 years ago

2022-07-05 11:07:06.922 | INFO | paddlespeech.s2t.training.trainer:do_train:271 - Train Total Examples: 6245 Traceback (most recent call last): File "D:\develop\workspace\PaddleSpeech\paddlespeech\s2t\training\trainer.py", line 342, in run self.do_train() File "D:\develop\workspace\PaddleSpeech\paddlespeech\s2t\training\trainer.py", line 307, in do_train raise e File "D:\develop\workspace\PaddleSpeech\paddlespeech\s2t\training\trainer.py", line 286, in do_train self.train_batch(batch_index, batch, msg) File "D:\develop\workspace\PaddleSpeech\paddlespeech\s2t\exps\deepspeech2\model.py", line 55, in train_batch loss = self.model(audio, audio_len, text, text_len) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 930, in call return self._dygraph_call_func(*inputs, kwargs) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 915, in _dygraph_call_func outputs = self.forward(*inputs, *kwargs) File "D:\develop\workspace\PaddleSpeech\paddlespeech\s2t\models\ds2\deepspeech2.py", line 292, in forward loss = self.decoder(eouts, eouts_len, text, text_len) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 930, in call return self._dygraph_call_func(inputs, kwargs) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 915, in _dygraph_call_func 2022-07-05 11:07:18.467 | ERROR | paddlespeech.s2t.training.trainer:do_train:306 - (InvalidArgument) The type of data we are trying to retrieve does not match the type of data currently contained in the container. (at C:\home\workspace\Paddle_release\paddle\phi\core\dense_tensor.cc:148) [operator < warpctc > error] 2022-07-05 11:07:18.468 | INFO | paddlespeech.s2t.training.timer:exit:44 - Epoch-Train Time Cost: 0:00:11.545535 2022-07-05 11:07:18.468 | INFO | paddlespeech.s2t.training.timer:exit:44 - Training Done: 0:00:12.690650 outputs = self.forward(*inputs, kwargs) File "D:\develop\workspace\PaddleSpeech\paddlespeech\s2t\modules\ctc.py", line 95, in forward loss = self.criterion(logits, ys_pad, hlens, ys_lens) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 930, in call return self._dygraph_call_func(*inputs, *kwargs) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 915, in _dygraph_call_func outputs = self.forward(inputs, kwargs) File "D:\develop\workspace\PaddleSpeech\paddlespeech\s2t\modules\loss.py", line 93, in forward loss = self.loss(logits, ys_pad, hlens, ys_lens, self._kwargs) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 930, in call return self._dygraph_call_func(*inputs, *kwargs) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 915, in _dygraph_call_func outputs = self.forward(inputs, kwargs) File "D:\conda\envs\asr\lib\site-packages\paddle\nn\layer\loss.py", line 1130, in forward norm_by_times=norm_by_times) File "D:\conda\envs\asr\lib\site-packages\paddle\nn\functional\loss.py", line 1126, in ctc_loss input_lengths, label_lengths) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\layers\loss.py", line 613, in warpctc norm_by_times, ) ValueError: (InvalidArgument) The type of data we are trying to retrieve does not match the type of data currently contained in the container. (at C:\home\workspace\Paddle_release\paddle\phi\core\dense_tensor.cc:148) [operator < warpctc > error]

image image 这个错误,起先是数据类型错误,后来我自己转了下类型还是错误,我的操作系统是下面的配置。 image image

zh794390558 commented 2 years ago

看log是数据类型错误,麻烦打印下输入的数据类型并查看paddle api 文档,看下是否一致。

Doubledongli commented 2 years ago

打印下输入的数据类型并查看paddle api 文档,看下是否一致

数据类型默认是int32,并且完全一样的代码,我在ubuntu上面运行是正常的,win10上就报错,并且我通过paddle.to_tensor转为int64以后,仍旧会报其他的错误,错误类型如下: File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\dygraph\layers.py", line 915, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "D:\conda\envs\asr\lib\site-packages\paddle\nn\layer\loss.py", line 1130, in forward norm_by_times=norm_by_times) File "D:\conda\envs\asr\lib\site-packages\paddle\nn\functional\loss.py", line 1126, in ctc_loss input_lengths, label_lengths) File "D:\conda\envs\asr\lib\site-packages\paddle\fluid\layers\loss.py", line 613, in warpctc norm_by_times, ) RuntimeError: (NotFound) There are no kernels which are registered in the warpctc operator. [Hint: Expected kernels_iter != all_op_kernels.end(), but received kernels_iter == all_op_kernels.end().] (at C:\home\workspace\Paddle_release\paddle\fluid\imperative\prepared_operator.cc:327) [operator < warpctc > error]

个人怀疑,这是一个系统底层数据转换的bug。 1657069924294

zh794390558 commented 2 years ago
image

确定是和这个api类型一致?确定的话有可能是win上的bug了。可以在paddle那边儿问问看。

Doubledongli commented 2 years ago

话有可能是win上的bug了。可以在paddle那边儿问问看。

已经找到原因了,windows无法安装pip的ppspeech的ctc_decoders,这个只有mac和linux版本,所以导致底层调用失败,啥时候paddle那边能出windows版本啊,自己想编译一直出问题

yt605155624 commented 2 years ago

自行编译paddlespeech-ctcdecoders的windows版本