主要内容

音频传输学习使用实验管理器

这个例子展示了如何配置一个实验时比较多个pretrained网络的性能应用于语音命令识别使用转移学习任务。它突出实验管理器的能力来优化hyperparameters和轻松地比较不同pretrained结果之间的网络使用内置的和用户定义的指标。

音频工具箱™提供了各种pretrained网络音频处理,每个包含一个不同的架构,需要不同的数据预处理。这些差异导致精度之间的权衡,各种网络的速度和规模。实验经理组织培训实验的结果突出每个网络的优点和缺点,这样你就可以选择最适合您的网络限制。

这个例子比较的性能YAMNet(音频工具箱)VGGish(音频工具箱)pretrained网络,以及专门设计的网络,是从头开始训练。看到深层网络设计师探索其他pretrained网络选项支持的音频工具箱™。万博1manbetx

在本例中您将下载谷歌语音命令数据集[1]和pretrained网络并将它们存储在你的临时目录,如果他们不是已经存在。数据集占用1.96 GB的磁盘空间和网络总共470 MB。

开放实验管理器

通过单击加载示例开放的例子按钮。这将打开项目经理在MATLAB编辑器实验。

内置训练实验由一个描述,hyperparameters表,设置函数,和一组度量函数对实验的结果进行评估。有关更多信息,请参见配置内置的训练实验

描述字段包含的文本描述的实验。

Hyperparameters部分指定策略(详尽的扫描)和hyperparameter值用于实验。当您运行实验,实验管理器使用每一列车网络的组合hyperparameter hyperparameter表中指定的值。这个案例展示了如何测试不同的网络类型。定义一个hyperparameter,网络,代表网络名称存储为字符串。

设置函数字段包含的名称主要功能配置训练数据,网络体系结构,实验和培训选项。setup函数的输入是一个结构从hyperparameter表与字段。setup函数返回训练数据,网络结构和训练参数作为输出。这已经被实现。

指标列表可以定义自己的自定义指标比较不同试验的训练实验。几个示例自定义度量函数被定义为你以后在这个例子。实验管理器运行每个上市指标对网络训练在每一个试验。指标定义为你在这个例子中是列在这里。任何额外的自定义度量您打算使用必须在这一节中列出。

定义设置函数

在这个例子中,设置函数下载数据集,选择所需的网络,执行必要的数据预处理,并设置网络训练选项。这个函数的输入是一个结构和字段中定义的每个hyperparameters实验管理器接口。在设置函数对于这个示例输入变量命名参数个数和输出变量命名trainingData,,选项代表培训数据、网络结构和训练参数,分别。的关键步骤设置函数对于这个示例如下所示。开放的MATLAB中的示例的完整定义compareNetSetup的名称设置函数在这个例子中使用。

下载并提取数据

加快,开放compareNetSetup和切换加速旗帜真正的。这减少了数据集的大小快速测试实验的基本功能。

加速= false;

辅助函数setupDatastores下载谷歌语音命令数据集[1],选择网络识别的命令,并随机分区训练和验证数据存储的数据。

[adsTrain, adsValidation] = setupDatastores(加速);

选择所需的网络和数据进行预处理

最初将基于预处理的数据存储所需的网络类型中定义hyperparameter表,这是访问params.Network。辅助函数extractSpectrogram处理输入数据的格式将每个各自的网络类型。辅助函数getLayers返回一个layerGraph对象代表所需的网络的体系结构。

tdsTrain =变换(adsTrain @ (x) extractSpectrogram (x, params.Network));tdsValidation =变换(adsValidation @ (x) extractSpectrogram (x, params.Network));
层= getLayers(类、classWeights numClasses,网络名);

现在,数据存储适当的设置,读取数据trainingDatavalidationData变量。

trainingData = readall (tdsTrain UseParallel = canUseParallelPool);validationData = readall (tdsValidation UseParallel = canUseParallelPool);
validationData =表(validationData (: 1), adsValidation.Labels);trainingData =表(trainingData (: 1), adsTrain.Labels);

设置培训选项

通过分配设置训练参数trainingOptions对象进选项输出变量。培养网络最多30时代的耐心8时代用亚当优化器。设置ExecutionEnvironment字段“自动”使用GPU如果可用。不使用GPU,培训可能非常耗时。

maxEpochs = 30;miniBatchSize = 256;validationFrequency =地板(元素个数(TTrain) / miniBatchSize);选择= trainingOptions (“亚当”,GradientDecayFactor = 0.7,InitialLearnRate = params.LearnRate,MaxEpochs = MaxEpochs,MiniBatchSize = MiniBatchSize,洗牌=“every-epoch”,情节=“训练进步”,Verbose = false,ValidationData = ValidationData,ValidationFrequency = ValidationFrequency,ValidationPatience = 10,LearnRateSchedule =“分段”,LearnRateDropFactor = 0.2,LearnRateDropPeriod =圆(maxEpochs / 3),ExecutionEnvironment =“汽车”);

自定义指标

实验管理器允许您自定义度量函数来评估网络的性能在每个试验培训。等基本指标准确性和默认损失计算。在这个例子中你比较每个模型的内存使用量的大小是一个重要的指标当部署深层神经网络的实际应用。

自定义指标函数必须接受一个输入参数trialInfo这是一个包含字段的结构吗trainedNetwork,trainingInfo,参数

度量函数必须返回一个标量值,逻辑输出,或字符串显示在结果表中。自定义指标定义为你在这个实验中下面列出:

  • sizeMB计算分配的内存来存储网络以兆字节为单位

  • numLearnableParams计数可学的参数的数量在每个模型

  • numIters计算的数量mini-batches每个网络训练前MaxEpochs或违反ValidationPatience参数trainingOptions对象。

运行实验

按“运行”在顶部窗格中实验管理器的应用程序运行实验。您可以选择运行每个试验顺序,同时,或批量切换模式的选择。对于这个实验,试验按顺序运行。

评估结果

当实验结束时,结果为每个审判和指标都显示在表格格式出现。进度条显示多少时代每个网络训练之前违反耐心参数的比例MaxEpochs

每一列的表可以按条目悬停在右边的列名称出现细胞和单击箭头。单击表图标在右上角选择显示或隐藏的列。首先网络的精度进行比较,验证准确性的降序排序表。

在准确度方面,Yamnet网络执行最好的紧随其后VGGish,最后自定义网络。然而,运行时间列显示Yamnet需要最长的火车。比较这些网络的大小,由sizeMB列排序表。

自定义网络是最小的,Yamnet是一个大几个数量级,VGGish是最大的。

这些结果强调之间的权衡不同的网络设计。的Yamnet网络执行最好的分类任务的成本更多的训练时间和适度大内存消耗。的VGGish网络精度稍差,但需要更多内存超过20倍YAMNet。最后,自定义网络最糟糕的准确性以小的优势但也使用最少的内存。

请注意,即使YamnetVGGishpretrained网络,自定义网络收敛速度最快的。看着NumIters列,自定义网络需要最批迭代收敛,因为它是从头开始学习。但是,自定义网络是小得多比深和浅pretrained模型,每一个批处理更新快得多,所以总体减少训练时间。

保存的一个训练网络的任何试验,右键单击相应的结果表中的行并选择出口训练网络

进一步分析任何个人的试验、单点击相应的行,和根据审查结果选项卡在顶部窗格中,您可以选择弹出一个阴谋的培训进展或混淆矩阵生成的训练模型。下面显示的混淆矩阵Yamnet模型试验2的实验。

模型区分两人最大的斗争命令“关闭”和“向上”以及“不”和“去”,虽然精度通常是统一的所有类。此外,模型很有信心在预测“是的”命令作为该类的假阳性率只有.4%。

引用

[1]监狱长P。“语音命令:一个公共数据集单字原图语音识别”,2017。可以从https://storage.googleapis.com/download.tensorflow.org/data/speech_commands_v0.01.tar.gz。版权2017年谷歌。语音命令数据集是创作共用署名4.0许可下的,可用:https://creativecommons.org/licenses/by/4.0/legalcode