监测深度学习培训的进展
这个例子展示了如何监测深度学习网络的训练过程。
为深度学习培训网络时,它通常是有用的监测培训进展。通过策划各种指标在训练,你可以学习如何培训进展。例如,您可以决定是否以及如何快速网络精度提高,和网络是否开始overfit训练数据。
这个例子展示了如何监视培训进展网络训练使用trainNetwork
函数。网络训练使用自定义训练循环,使用trainingProgressMonitor
对象图指标在训练。有关更多信息,请参见监控定制培训循环的进展。
当你设置情节
培训选项“训练进步”
在trainingOptions
并开始网络训练,trainNetwork
创建一个图,显示在每个迭代训练指标。每个迭代是一个梯度估计和更新网络的参数。如果您指定验证数据trainingOptions
每一次,那么图中显示验证指标trainNetwork
验证网络。图块以下:
训练精度——在每个mini-batch分类精度。
平滑的训练精度——平滑训练精度,通过应用平滑算法来训练精度。比不光滑精度不太吵了,使其更容易发现趋势。
验证准确性——分类精度在整个验证集(指定使用
trainingOptions
)。培训损失,平滑培训损失,确认损失——每个mini-batch上的损失,其平滑版本,分别和验证上的损失。如果你的网络是一个最后一层
classificationLayer
,那么损失函数是交叉熵的损失。关于损失函数的更多信息分类和回归问题,明白了输出层。
回归网络、图块均方根误差(RMSE)的准确性。
这个数字是每个培训时代使用一个阴影的背景。一个时代是一个完整的通过整个数据集。
在培训期间,您可以停止训练并返回网络的当前状态通过单击停止按钮在右上角。例如,您可能想要阻止培训当网络的准确性达到高原,很明显,精度不再提高。单击停止按钮后,可能需要一段时间的训练来完成。培训完成后,trainNetwork
返回训练网络。
培训结束时,查看结果显示完成验证准确性和培训完成的原因。如果OutputNetwork
训练方法是“最后一次迭代的”
(默认),最后确定的指标对应于迭代的最后一次训练。如果OutputNetwork
训练方法是“best-validation-loss”
,最后确定的指标对应于迭代验证最低的损失。最后的验证指标的迭代计算是标记最后的情节。
如果你的网络包含批量标准化层,最后验证指标可以是不同的验证指标评估在训练。这是因为均值和方差统计用于批处理规范化培训完成后可以是不同的。例如,如果BatchNormalizationStatisics
训练方法是“人口”
,然后训练后,软件使结束批规范化统计再次通过训练数据传递和使用结果的均值和方差。如果BatchNormalizationStatisics
训练方法是“移动”
,那么软件近似估计运行的统计数据在训练使用,并使用最新的统计值。
在右边,视图的信息训练时间和设置。了解更多关于训练选项,看看设置参数和卷积神经网络训练。
保存培训进度图,点击出口培训策划在培训窗口中。你可以节省情节PNG, JPEG, TIFF或PDF文件。你也可以保存个人的损失,准确性,使用轴工具栏和根均方误差。
情节训练在训练进展
训练一个网络在训练和情节训练进展。
加载训练数据,其中包含5000位的图像。拨出1000的图片用于网络验证。
[XTrain, YTrain] = digitTrain4DArrayData;idx = randperm(大小(XTrain, 4), 1000);XValidation = XTrain (:,:,:, idx);XTrain (::,:, idx) = [];YValidation = YTrain (idx);YTrain (idx) = [];
构建一个网络对数字图像数据进行分类。
层= [imageInputLayer ([28 28 1]) convolution2dLayer(3 8填充=“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer(2步= 2)convolution2dLayer(填充= 3,16日“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer(2步= 2)convolution2dLayer(3、32、填充=“相同”)batchNormalizationLayer reluLayer fullyConnectedLayer (10) softmaxLayer classificationLayer];
为网络培训指定选项。验证网络定期培训期间,指定验证数据。选择ValidationFrequency
值,这样每个时代网络验证一次。情节训练进展在培训,设置情节
培训选项“训练进步”
。
选择= trainingOptions (“个”,…MaxEpochs = 8,…ValidationData = {XValidation, YValidation},…ValidationFrequency = 30,…Verbose = false,…情节=“训练进步”);
培训网络。
网= trainNetwork (XTrain、YTrain层,选择);