当你训练网络进行深度学习时,监控训练进度通常是有用的。通过绘制培训期间的各种指标,您可以了解培训是如何进行的。例如,您可以确定网络准确性是否以及以多快的速度提高,以及网络是否开始过度拟合训练数据。
当你指定“训练进步”
随着“阴谋”
价值培训选项
开展网络培训,,trainNetwork
创建一个图形,并在每次迭代中显示培训指标。每次迭代都是对梯度的估计和网络参数的更新。中指定验证数据培训选项
,图中显示每次验证的度量trainNetwork
验证网络。图中描绘了如下内容:
训练精度-每个小批量的分类精度。
平滑的训练精度—平滑训练精度,将平滑算法应用到训练精度上获得。与不平滑的精度相比,它的噪声更小,因此更容易发现趋势。
验证精度-整个验证集的分类精度(使用培训选项
).
培训损失,平滑训练损失和确认损失- - - - - -每个小批量的损失,它的平滑版本,和验证集的损失,分别。如果你的网络的最后一层是classificationLayer
,则损失函数为交叉熵损失。有关用于分类和回归问题的损失函数的更多信息,请参见输出层.
对于回归网络,图中绘制的是均方根误差(RMSE)而不是精度。
这个图形标记了每一次训练时代使用阴影背景。epoch是对整个数据集的完整遍历。
在培训过程中,可以通过单击右上角的“停止”按钮停止培训,返回当前网络状态。例如,当网络的准确性达到一个平台时,您可能想要停止训练,并且很明显准确性不再提高。点击停止按钮后,可能需要一段时间才能完成培训。一旦培训完成,trainNetwork
返回训练过的网络。
当训练结束时,查看后果显示最终确认的准确性和培训结束的原因。如果“OutputNetwork”
训练选项设置为最后一次迭代的
(默认),最终确定的度量与最后的训练迭代相对应。如果“OutputNetwork”
训练选项设置为“最佳验证损失”
,最终确定的指标对应于验证损失最低的迭代。从中计算最终验证指标的迭代被标记为最终的的情节。
如果网络包含批次标准化层,则最终验证指标可能与培训期间评估的验证指标不同。这是因为培训完成后,用于批次标准化的均值和方差统计数据可能不同。例如,如果“BatchNormalizationStatisics”
培训选项是“人口”
,然后在训练之后,软件通过再次传递训练数据并使用得到的均值和方差,最终确定批量标准化统计。如果“BatchNormalizationStatisics”
培训选项是“移动”
,然后软件使用运行估计值来近似训练期间的统计数据,并使用统计数据的最新值。
在右侧,查看有关培训时间和设置的信息。要了解有关培训选项的更多信息,请参阅卷积神经网络参数的建立与训练.
训练网络,并在训练过程中绘制训练进度图。
加载包含5000个数字图像的训练数据。留出1000个图像用于网络验证。
[XTrain, YTrain] = digitTrain4DArrayData;idx = randperm(大小(XTrain, 4), 1000);XValidation = XTrain (:,:,:, idx);XTrain (::,:, idx) = [];YValidation = YTrain (idx);YTrain (idx) = [];
构建网络对数字图像数据进行分类。
层=[imageInputLayer([28 1])卷积层(3,8,“填充”,“一样”)batchNormalizationLayer reluLayer MaxPoolig2dLayer(2,“步”,2)卷积2层(3,16,“填充”,“一样”)batchNormalizationLayer reluLayer MaxPoolig2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”,“一样”)batchNormalizationLayer reluLayer fullyConnectedLayer(10)softmaxLayer classificationLayer];
指定网络训练选项。要在训练期间定期验证网络,请指定验证数据。选择“验证频率”
值,使网络大约每个历元验证一次。若要在培训期间绘制培训进度,请指定“训练进步”
随着“阴谋”
价值。
选项=培训选项(“个”,...“MaxEpochs”8...“验证数据”,{XValidation,YValidation},...“验证频率”,30,...“详细”错误的...“阴谋”,“训练进步”);
培训网络。
net=列车网络(XTrain、YTrain、图层、选项);