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