这个例子展示了如何通过使用实验经理.在本例中,您使用回归模型来预测手写数字的旋转角度。一个自定义度量函数决定了与真实角度在可接受的误差范围内的角度预测的比例。有关使用回归模型的更多信息,请参见用于回归的卷积神经网络训练.
首先,打开这个例子。实验经理使用可以检查和运行的预配置实验加载项目。打开实验,在实验浏览器窗格中,双击实验的名称(回归实验
).
内置训练实验包括描述,一种超参数,设置功能和度量函数的集合来评估实验结果。有关更多信息,请参阅配置内建训练实验.
这描述字段包含实验的文本描述。对于此示例,描述是:
回归模型来预测数字的旋转角度,使用超参数来指定:*卷积层使用的滤波器数量*网络中退出层的概率
这普遍存在第节指定了策略(彻底的扫描
)和用于实验的超参数值。当您运行实验时,experiment Manager使用超参数表中指定的每个超参数值组合来训练网络。这个例子使用了两个超参数:
可能性
设置神经网络中退出层的概率。默认情况下,超参数的值指定为(0.1 - 0.2)
.
过滤器
表示神经网络中第一卷积层使用的滤波器数量。在后续的卷积层中,滤波器的数量是这个值的倍数。默认情况下,超参数的值指定为[4 6 8]
.
这设置功能配置实验的培训数据、网络体系结构和培训选项。设置函数的输入是一个结构,其中包含hyperparameter表中的字段。setup函数返回四个输出,用于训练网络解决图像回归问题。设置功能有三个部分。
负荷训练数据将实验的训练和验证数据定义为4-D阵列。每个训练和验证数据集包含5000张从0到9的数字图像。回归值对应于数字的旋转角度。
[XTrain,~,YTrain]=数字阵列数据;[XValidation,~,YValidation]=数字阵列数据;
定义网络架构定义用于回归的卷积神经网络的体系结构。
inputSize=[28 28 1];numFilters=params.Filters;layers=[imageInputLayer(inputSize)卷积2dLayer(3,numFilters,Padding=“相同”) batchNormalizationLayer reluLayer averagePooling2dLayer(2,Stride=2) convolution2dLayer(3,2*numFilters,Padding=“相同”)BatchnormalizationLayer Ruplayer普通泡冷轧2dlayer(2,stride = 2)卷积2dlayer(3,4 * numfilters,padding =“相同”)BatchnormalizationLayer Rufulayer卷积2Dlayer(3,4 * NumFilters,Padding =“相同”)BatchnormalizationLayer Ruplayer Dropouter(Params.Probability)全连接列(1)回归层];
指定培训选项定义一个培训选项
实验对象。实例训练网络30个时代。学习速率最初为0.001,20个纪元后下降0.1倍。该软件在训练数据上对网络进行训练,并在训练期间定期计算验证数据的均方根误差(RMSE)和损失。验证数据不用于更新网络权重。
miniBatchSize=128;validationFrequency=floor(numel(YTrain)/miniBatchSize);options=trainingOptions(“sgdm”那......MiniBatchSize = MiniBatchSize,......maxepochs = 30,......InitialLearnRate = 1 e - 3,......学习进度表=“分段”那......LearnRateDropFactor=0.1,......学习ropperiod = 20,......Shuffle =.“every-epoch”那......ValidationData = {XValidation,YValidation},......ValidationFrequency=ValidationFrequency,......冗长=错误);
检查设置功能,下设置功能,点击编辑.安装功能在MATLAB®编辑器中打开。此外,设置函数的代码出现在附录1在这个例子的最后。
这指标节指定对实验结果进行评估的可选函数。实验管理器每次完成网络训练后都会评估这些功能。如果需要查看度量函数,请选择度量函数的名称,单击编辑。度量函数将在MATLAB编辑器中打开。
此示例包括一个度量函数精确
这决定了来自真实角度的可接受的误差余量内的角度预测的百分比。默认情况下,该函数使用10度的阈值。度量函数的代码出现在附录2在这个例子的最后。
运行实验时,实验经理培训由设置功能定义的网络六次。每次试用都使用不同的Hyper参数值组合。默认情况下,实验管理器一次运行一项试验。如果您有并行计算工具箱™,则可以同时运行多个试验。为了获得最佳结果,在运行实验之前,请启动一个并行池,与GPU一样多的工人。有关更多信息,请参阅使用实验管理器并行训练网络和GPU支万博1manbetx持情况(并行计算工具箱).
要一次运行一次试验,请在“试验管理器”工具栏上单击跑.
要同时运行多次试验,请单击使用并行然后跑.如果没有当前并行池,则实验管理器使用默认群集配置文件启动一个。实验经理然后执行多个同时试验,具体取决于可用的并行工作人员的数量。
结果表显示了每个试验的RMSE和损失。该表还显示了由自定义度量函数确定的试验精度精确
.
在实验运行时,单击培训情节显示训练图并跟踪每次试验的进度。
要找到您的实验的最佳结果,请通过精度对结果表进行排序。
指出精确列。
点击三角形图标。
选择按降序排序.
准确度最高的试验显示在结果表的顶部。
为了测试单个试验的性能,导出经过训练的网络并显示每个数字类的残差箱线图。
选择最高精度的试用。
在这一点实验经理ToolStrip,点击出口.
在对话框窗口中,输入导出网络的工作区变量的名称。默认名称是trainedNetwork
.
使用导出的网络作为函数的输入绘图仪残差
,列入附录3在这个例子的最后。例如,在MATLAB命令窗口中,输入:
plotresidss(训练网络)
该函数为每个数字创建一个残差方框图。具有最高精度的数字类别的平均值接近零且方差很小。
要记录对实验结果的观察,请添加注释。
在结果表中,右键单击精确最佳试验的细胞。
选择添加注释.
在注释窗格,在文本框中输入您的观察。
有关更多信息,请参阅排序,过滤和注释实验结果.
在实验浏览器窗格,右键单击项目的名称并选择关闭项目.实验经理关闭项目中包含的所有实验和结果。
此功能配置实验的培训数据,网络架构和培训选项。
输入
参数个数
是实验管理器HyperParameter表中的字段的结构。
输出
XTrain.
是一个包含培训数据的4-D阵列。
钇
是一个包含训练回归值的一维数组,
层数
是定义神经网络架构的层图。
选项
是一个培训选项
对象
作用[XTrain,Ytrain,图层,选项] = RegentionExperiment_Setup1(Params)[XTrain,〜,Ytrain] = Digittrain4darrayData;[xvalidation,〜,yvalidation] = dimittest4darraydata;inputSize=[28 28 1];numFilters=params.Filters;layers=[imageInputLayer(inputSize)卷积2dLayer(3,numFilters,Padding=“相同”) batchNormalizationLayer reluLayer averagePooling2dLayer(2,Stride=2) convolution2dLayer(3,2*numFilters,Padding=“相同”)BatchnormalizationLayer Ruplayer普通泡冷轧2dlayer(2,stride = 2)卷积2dlayer(3,4 * numfilters,padding =“相同”)BatchnormalizationLayer Rufulayer卷积2Dlayer(3,4 * NumFilters,Padding =“相同”)BatchnormalizationLayer Ruplayer Dropouter(Params.Probability)全连接列(1)回归层];miniBatchSize=128;validationFrequency=floor(numel(YTrain)/miniBatchSize);options=trainingOptions(“sgdm”那......MiniBatchSize = MiniBatchSize,......maxepochs = 30,......InitialLearnRate = 1 e - 3,......学习进度表=“分段”那......LearnRateDropFactor=0.1,......学习ropperiod = 20,......Shuffle =.“every-epoch”那......ValidationData = {XValidation,YValidation},......ValidationFrequency=ValidationFrequency,......冗长=错误);结束
此函数用于计算在真实角度的可接受误差范围内的预测数。
作用metricOutput = Accuracy(trialInfo) [XValidation,~,YValidation] = digitTest4DArrayData;YPredicted =预测(trialInfo.trainedNetwork XValidation);predictionError = YValidation - YPredicted;用力推= 10;numCorrect = sum(abs(predictionError) < thr);numValidationImages =元素个数(YValidation);metricOutput = 100 * numCorrect / numValidationImages;结束
此函数为每个数字创建一个剩余盒绘图。
作用plotResiduals(net) [XValidation,~,YValidation] = digitTest4DArrayData;YPredicted =预测(净,XValidation);predictionError = YValidation - YPredicted;residualMatrix =重塑(predictionError, 500, 10);图箱线图(residualMatrix,......“标签”,{'0'那'1'那'2'那'3'那“4”那“5”那“6”那“7”那“8”那“9”})xlabel('数字班')伊拉贝尔('度错误')标题(“残差”)结束