Контролируйте процесс обучения глубокого обучения

Когда вы обучаете нейронные сети для глубокого обучения, часто полезно контролировать процесс обучения. Путем графического вывода различных метрик во время обучения можно изучить, как обучение прогрессирует. Например, можно определить, если и как быстро сетевая точность улучшается, и начинает ли сеть сверхсоответствовать обучающим данным.

Когда вы задаете 'training-progress' как 'Plots' значение в trainingOptions и запустите сетевое обучение, trainNetwork создает фигуру и отображает учебные метрики в каждой итерации. Каждая итерация является оценкой градиента и обновлением сетевых параметров. Если вы задаете данные о валидации в trainingOptions, затем рисунок показывает метрики валидации каждый раз trainNetwork подтверждает сеть. Фигура строит следующее:

  • Учебная точность — точность Классификации на каждом отдельном мини-пакете.

  • Сглаживавшая учебная точность — Сглаживавшая учебная точность, полученная путем применения алгоритма сглаживания для учебной точности. Это является менее шумным, чем не сглаживавшая точность, облегчая определять тренды.

  • Точность валидации — точность Классификации на целом наборе валидации (заданное использование trainingOptions).

  • Учебная потеря, сглаживавшая учебная потеря и потеря валидации потеря на каждом мини-пакете, его сглаживавшей версии и потере на наборе валидации, соответственно. Если последним слоем вашей сети является classificationLayer, затем функция потерь является перекрестной энтропийной потерей. Для получения дополнительной информации о функциях потерь для классификации и проблем регрессии, смотрите Выходные Слои.

Для сетей регрессии фигура строит среднеквадратичную ошибку (RMSE) вместо точности.

Фигура отмечает каждую учебную Эпоху с помощью теневого фона. Эпоха является всей передачей через целый набор данных.

Во время обучения можно остановить обучение и возвратить текущее состояние сети путем нажатия кнопки остановки в верхнем правом углу. Например, вы можете хотеть остановить обучение, когда точность сети достигает плато, и ясно, что точность больше не улучшается. После того, как вы нажмете кнопку остановки, она может требовать времени для обучения завершиться. Если обучение завершено, trainNetwork возвращает обучивший сеть.

Когда обучение закончится, просмотрите Результаты, показывающие итоговую точность валидации и причину то законченное обучение. Итоговые метрики валидации помечены Final в графиках. Если ваша сеть содержит пакетные слои нормализации, то итоговые метрики валидации часто отличаются от метрик валидации, оцененных во время обучения. Это вызвано тем, что пакетные слои нормализации в итоговой сети выполняют различные операции, чем во время обучения.

Справа, просмотрите информацию в учебное время и настройки. Чтобы узнать больше об опциях обучения, смотрите Настроенные Параметры и Обучите Сверточную нейронную сеть.

Постройте процесс обучения во время обучения

Обучите сеть и постройте процесс обучения во время обучения.

Загрузите обучающие данные, который содержит 5 000 изображений цифр. Отложите 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);

Смотрите также

|

Похожие темы