lovelycation星音攻略

2025-04-30 19:00:10

重要的是要知道,真正的语音和音频识别系统要复杂得多,但是像M鲍伊酷雪NIST(入门级的CV数据集)一样,它应该会让你对所涉技术有一个基本的了解。完成本教程后,你将可以共磨愆裆尝试创建一个模型,将一秒钟的音频剪辑去噪,识别单词有“yes”,“no”,“up”,“down”,"left","right","on","off","stop",or "go"。你也可以在Android应用程序中运行该模型。准备你要确保已经安装了TensorFlow,由于该版本下载了超过1GB的训练数据,因此你需要电脑有足够的内存,另外网速要快,训练过程可能需要几个小时。训练要开始训练过程,请访问TensorFlow源代码树并运行:python tensorflow/examples/speech_commands/train.py训练过程将从下载“ 语音命令”数据集开始,该数据集由65000个WAVE音频文件组成,其中有30个不同的单词。这些数据是由Google收集的,并根据CCBY许可证发布。存档超过1GB,所以下载可能需要一段时间,但你应该能看到进度日志,一旦下载完成,你就不用再次执行此步骤了。下载完成后,你将看到如下所示的日志记录信息:I0730 16:53:44.766740 55030 train.py:176] Training from step: 1I0730 16:53:47.289078 55030 train.py:217] Step #1: rate 0.001000, accuracy 7.0%, cross entropy 2.611571这表明初始化过程已经完成,循环训练已经开始。你会看到它输出每个训练步骤的信息。步骤分解:Step #1表明我们正在循环训练的第一步。在这种情况下,总共将有18000个步骤,所以你可以查看步骤号码,了解其完成程度有多接近。rate 0.001000是控制网络权重更新速度的学习率。早期的这个数字是相对较高的(0.001),但是对于后来的训练周期,它会减少10倍到0.0001。accuracy 7.0%在这个训练步骤中正确地预测了有多少classes。value函数往往波动很大,但随着训练的进行,平均值会增加。该模型输出一个数字数组,每个标签一个,每个数字是该类输入的预测可能性。通过选择具有最高分数的条目来选择预测的标签,分数总是在零和一之间。cross entropy 2.611571是我们用来指导培训过程的损失功能的结果。这是通过比较当前训练运动与正确标签的分数向量获得的分数,这在训练期间应该向下倾斜。经过一百步,你应该看到这样的一行:I0730 16:54:41.813438 55030 train.py:252] Saving to "/tmp/speech_commands_train/conv.ckpt-100"这是将当前训练的权重保存到checkpoint文件中。如果你的训练脚本中断,可以查找最后保存的checkpoint,然后:--start_checkpoint=/tmp/speech_commands_train/conv.ckpt-100使用命令行参数重新启动脚本, 从那里开始。混淆矩阵:四百步后,将记录以下信息:I073016:57:38.07366755030train.py:243]ConfusionMatrix:[[25800000000000][762694749115402011][10110780132201310104][131616364805101017][1511711455130922509][11697387112460010][8686841324199106][933211292613619009][8212949520672002][161397429420637903][156177150370632219][111615154208160020]]第一部分是混淆矩阵。要了解这是什么意思,你首先需要知道正在使用的标签,在这种情况下,它们分别表示为静音、未知yes、no、up、down、left、right、on、off、stop、go。第一行是所有的静音剪辑,第二个剪辑是未知的单词,第三个“yes”等。该矩阵可以比单个准确率得分更有用,因为它可以很好地总结出网络发生的错误。在此示例中,你可以看到除了初始条目之外,第一行中的所有条目都为零。因为第一行实际上都是静音的片段,所以这意味着它们都没有被错误的标注为文字,所以我们没有任何静音的否定。这表明网络已经越来越好地区分了静音与谈话。一个完美的模型将产生一个混淆矩阵,其中所有的条目都是从对角线穿过中心的零点。一旦你确定了可以通过添加更多数据来解决问题,该模型的方差可以帮助你了解模型怎样最容易混淆。验证混淆矩阵之后,你会看到如下一行:I0730 16:57:38.073777 55030 train.py:245] Step 400: Validation accuracy = 26.3% (N=3093)将数据集分为三类是很好的做法。最大的(大约是数据的80%)用于训练网络,一个较小的集(10%“validation”)被保留用于评估训练中的准确性,另一组10%,“testing”)用于在训练完成后评估准确度。通过将数据集分类为训练集、验证集、测试集,你可以确保该模型适用于之前从未见过的数据。测试集是一个额外的保障措施,以确保不仅仅是以适用于训练和验证集拟合调整模型。训练脚本将数据集自动分成这三个类别,上面的记录行显示了在验证集上运行时的模型准确率。理想情况下,这应该与训练准确性相当接近。如果训练准确性增加但验证不是这样,这表明过度拟合正在发生,你的模型只是学习关于训练剪辑的东西,而不是真正的训练模式。Tensorboard使用Tensorboard可以看出训练进展。默认情况下,脚本将事件保存到/ tmp / retrain_logs,可以通过运行以下命令来加载它们:tensorboard --logdir /tmp/retrain_logs然后在浏览器中导航到 http:// localhost:6006,将看到显示模型进度的图表。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢