При обучении сетей глубокому обучению часто полезно следить за ходом обучения. Построив различные показатели во время обучения, можно узнать, как проходит обучение. Например, можно определить, насколько быстро повышается точность сети и начинает ли сеть перегружать данные обучения.
При указании 'training-progress' в качестве 'Plots' значение в trainingOptions и начать обучение сети, trainNetwork создает фигуру и отображает метрики обучения в каждой итерации. Каждая итерация представляет собой оценку градиента и обновление параметров сети. Если указаны данные проверки в trainingOptions, то рисунок показывает метрики проверки каждый раз trainNetwork проверяет сеть. На рисунке показано следующее:
Точность обучения - точность классификации для каждой отдельной мини-партии.
Сглаженная точность обучения - сглаженная точность обучения, полученная путем применения алгоритма сглаживания к точности обучения. Это менее шумно, чем несмытая точность, что облегчает выявление тенденций.
Точность проверки - точность классификации для всего набора проверки (задается с помощью trainingOptions).
Потеря обучения, сглаженная потеря обучения и потеря проверки - потеря в каждой мини-партии, ее сглаженной версии и потеря в наборе проверки соответственно. Если последним уровнем сети является classificationLayer, то функция потерь является перекрестной потерей энтропии. Дополнительные сведения о функциях потерь для проблем классификации и регрессии см. в разделе Выходные слои.
Для регрессионных сетей рисунок отображает среднеквадратическую ошибку (RMSE) вместо точности.
На рисунке отмечается каждая учебная эпоха с помощью затененного фона. Эпоха - это полный проход через весь набор данных.
Во время обучения можно остановить обучение и вернуть текущее состояние сети, нажав кнопку остановки в правом верхнем углу. Например, вы можете прекратить обучение, когда точность сети достигает плато, и ясно, что точность больше не улучшается. После нажатия кнопки остановки обучение может пройти некоторое время. После завершения обучения trainNetwork возвращает обученную сеть.
После завершения обучения просмотрите результаты, показывающие окончательную точность проверки и причину завершения обучения. Окончательные метрики проверки помечены на графиках как Конечные (Final). Если сеть содержит уровни пакетной нормализации, окончательные метрики проверки могут отличаться от метрик проверки, оцененных во время обучения. Это объясняется тем, что статистика средних значений и отклонений, используемая для нормализации партий, может отличаться после завершения обучения. Например, если 'BatchNormalizationStatisics' вариант обучения - 'population'затем после обучения программное обеспечение завершает статистику пакетной нормализации путем повторного прохождения обучающих данных и использует полученное среднее значение и дисперсию. Если 'BatchNormalizationStatisics' вариант обучения - 'moving'затем программное обеспечение аппроксимирует статистику во время обучения с использованием текущей оценки и использует последние значения статистики.
Справа просмотрите информацию о времени и настройках обучения. Дополнительные сведения о параметрах обучения см. в разделах Настройка параметров и конволюционная нейронная сеть поезда.

Обучение сети и составление графика хода обучения во время обучения.
Загрузите обучающие данные, содержащие 5000 изображений цифр. Отложите 1000 изображений для проверки сети.
[XTrain,YTrain] = digitTrain4DArrayData; idx = randperm(size(XTrain,4),1000); XValidation = XTrain(:,:,:,idx); XTrain(:,:,:,idx) = []; YValidation = YTrain(idx); YTrain(idx) = [];
Создайте сеть для классификации цифровых данных изображения.
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(3,8,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,16,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,32,'Padding','same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];Укажите параметры сетевого обучения. Для проверки сети с регулярными интервалами во время обучения укажите данные проверки. Выберите 'ValidationFrequency' значение, чтобы сеть проверялась один раз за эпоху. Для построения графика хода обучения во время обучения укажите 'training-progress' в качестве 'Plots' значение.
options = trainingOptions('sgdm', ... 'MaxEpochs',8, ... 'ValidationData',{XValidation,YValidation}, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress');
Обучение сети.
net = trainNetwork(XTrain,YTrain,layers,options);

trainingOptions | trainNetwork