当前位置:网站首页>MindSpore:【语音识别】DFCNN网络训练loss不收敛
MindSpore:【语音识别】DFCNN网络训练loss不收敛
2022-07-30 19:04:00 【小乐快乐】
问题描述:
我参考了Model Arts的例子
想要用MindSpore也实现语音识别,根据脚本迁移了网络。网络最后是调通了,但是Loss不收敛,训练得到的模型推理结果比预期长了一段。
请问有专家可以帮忙看看问题出在哪里吗?
附加一些说明,也许可以更好解决我遇到的问题
Model Arts上,是用两个网络组合完成语音识别的任务的:DFCNN+Transformer
首先构造了数据集get_data,可以把读取音频文件和标注的文本。
思路是先得到声音的时域信息,就是像如下的波形图

然后compute_fbank做傅里叶变换,转换为语谱图。
用这个代码可以把数据可视化,我在附件里提供了代码,注释掉了。
frame_time = [i * 0.025 for i in range(x.shape[1])] frequency_scale = [i *40 for i in range(200)] print(frame_time) print(frequency_scale) plt.pcolormesh(frame_time, frequency_scale, x.squeeze().T) plt.colorbar() plt.show()

这样可以把ASR的任务转换成CV的任务。DFCNN的目的就是根据这个语谱图,识别其中的语音信息,得到拼音序列。
Transformer是NLP的网络,可以把拼音序列转成文字。
我主要是迁移了DFCNN的部分,本质还是CV类的网络,不过使用的损失函数是P.CTCLoss,是对整个序列求Loss值。可能问题出在这里,因为原来的脚本是keras写的,好像这个ctcloss的入参不一致。
问题现象:
训练我没有用全部的数据集,就拿了一个音频文件,想看看效果,但是Loss值到140左右就不动了。
loss值
177.98982,175.98216, 175.95705,……,146.96646,147.22882,147.1331
验证我也是用同样的那个音频,推理后还需要解码,我调用了P.CTCGreedyDecoder。这个推理得到的是拼音,我直接用匹配汉字的方法,输出的结果,前面对的上,后面跟了一段尾巴。
绿是阳春烟景大块文章的底色四月的林峦更是绿得鲜活秀媚诗意盎然 (这个后面就是多出来 的)月月阳绿底林盎景盎的然意......
因为我使用keras的那个脚本,是可以训练收敛的,想知道是哪里对不上了。
使用的环境:
由于P.CTCGreedyDecoder只支持Ascend,脚本要在Ascend上执行。如果不推理只训练,可以用GPU。mindspore版本1.0以上好像都可以。
我还有几个建议
1.能不能提供一些供语音处理的算子,比如计算mfcc, spectrogram等,不然音频数据处理用python还是效率挺低的。
2.CTCGreedyDecoder,CTCLoss希望GPU,CPU都支持更好,比如我训练好,用自己电脑可以直接做推理。
3.mindspore是否可以提供读取音频文件的接口,像图片,文本都支持挺好,语音这块的能力希望也能补上。
脚本,训练数据见附件, 解压后有三个文件
wav是音频文件,我就用一个试着训练
dfcnn.py是我的脚本,里面一些路径设置,还要麻烦改一下
data.txt是音频的标注文件。这个是从华为云上拿下来的,已经整理好的标注数据全集,不过如果只训练一个,只会读取一条,可以用head -n 1 data.txt看一下,第一句就是我希望得到的识别结果。
解决方案:
问题
看问题的现象,前面字段对的上,说明训练应该是有一定效果的,模型还是学习到东西了的。
这个模型本身我不是很熟,后续的尾巴猜测是不是需要设置一些blank标识,不代表任务结果,就是占位符。
因为Ascend上运行的大部分都还是固定shape的数据,这样必定长数据必然存在一些padding数据,对应结果也需要一个blank标识来对应padding占位。
改进
您的意见很好,我们会考虑逐步完善音频方面的支持,对应建议可以考虑反馈到Mindspore代码仓(
https://gitee.com/mindspore/mindspore)提一些Issue来反馈并记录。
边栏推荐
- Vulkan开启特征(feature)的正确姿势
- 解决终极bug,项目最终能顺利部署上线。
- MongoDB打破了原则引入SQL?
- The large-scale application of artificial intelligence AI products in industrial-grade mature shipping ports of CIMC World Lianda will create a new generation of high-efficiency smart ports and innova
- DM8: Single database and single instance to build a local data guard service
- Entering the applet for the first time
- golang日志库zerolog使用记录
- Go 系统收集
- 延时队列优化 (2)
- MindSpore:自定义dataset的tensor问题
猜你喜欢

Delay queue optimization (2)

Scrapy framework is introduced

OneFlow source code analysis: Op, Kernel and interpreter

开心的聚餐

经济新闻:错误# 15:初始化libiomp5md。dll,但发现libiomp5md。已经初始化dll。解决方法

【Pointing to Offer】Pointing to Offer 18. Delete the node of the linked list

The advanced version of the cattle brushing series (search for rotating sorted arrays, inversion of the specified range in the linked list)

防抖和节流有什么区别,分别用于什么场景?

中集世联达工业级成熟航运港口人工智能AI产品规模化应用,打造新一代高效能智慧港口和创新数字港口,全球港航人工智能能领军者中集飞瞳

电脑死机的时候,发生了什么?
随机推荐
Another company interview
实体中增加操作方法
设计消息队列存储消息数据的 MySQL 表格
运营 23 年,昔日“国内第一大电商网站”黄了...
Scala学习:breakable
【PHPWord】Quick Start of PHPWord in PHPOffice Suite
MongoDB打破了原则引入SQL?
荐号 | 对你有恩的人,不要请吃饭来报答
经济新闻:错误# 15:初始化libiomp5md。dll,但发现libiomp5md。已经初始化dll。解决方法
SwiftUI iOS 精品开源项目之 完整烘焙食品菜谱App基于SQLite(教程含源码)
NC | Tao Liang Group of West Lake University - TMPRSS2 "assists" virus infection and mediates the host invasion of Clostridium sothrix hemorrhagic toxin...
What is the difference between a cloud database and an on-premises database?
Delay queue optimization (2)
解决终极bug,项目最终能顺利部署上线。
7.29模拟赛总结
【剑指 Offe】剑指 Offer 18. 删除链表的节点
Chapter 4 Controlling the Execution Flow
几个GTest、GMock的例子
Deepen school-enterprise cooperation and build an "overpass" for the growth of technical and skilled talents
中集世联达飞瞳全球工业人工智能AI领军者,全球顶尖AI核心技术高泛化性高鲁棒性稀疏样本持续学习,工业级高性能成熟AI产品规模应用