В этом примере показано, как обучить глубокие сети в параллели с помощью Experiment Manager. Выполнение эксперимента параллельно позволяет вам пробовать различные учебные настройки одновременно. Можно также использовать MATLAB®, в то время как обучение происходит. Параллельное выполнение требует Parallel Computing Toolbox™.
В этом примере вы обучаете две сети, чтобы классифицировать изображения цифр от 0 до 9. Эксперимент обучает сети с увеличенными данными изображения, произведенными путем применения случайных переводов и горизонтальных отражений к набору данных Цифр. Увеличение данных препятствует тому, чтобы сети сверхсоответствовали и запомнили точные детали учебных изображений. Когда вы запускаете эксперимент, Experiment Manager запускает параллельный пул и выполняет несколько одновременных испытаний, в зависимости от количества параллельных доступных рабочих. Каждое испытание использует различную комбинацию сети и опций обучения. В то время как вы контролируете процесс обучения, можно остановить испытания, которые, кажется, показывают низкие результаты.
Как альтернатива, можно использовать parfor
или parfeval
обучать несколько сетей параллельно программно. Для получения дополнительной информации смотрите, Обучают Нейронные сети для глубокого обучения параллельно.
Во-первых, откройте пример. Experiment Manager загружает проект с предварительно сконфигурированным экспериментом, который можно смотреть и запустить. Чтобы открыть эксперимент, в панели Браузера Эксперимента, дважды кликают имя эксперимента (AugmentedDataExperiment
).
Встроенные учебные эксперименты состоят из описания, таблицы гиперпараметров, функции настройки и набора метрических функций, чтобы оценить результаты эксперимента. Для получения дополнительной информации смотрите, Конфигурируют Встроенный Учебный Эксперимент.
Поле Description содержит текстовое описание эксперимента. В данном примере описание:
Classification using data image augmentation to apply random translations and horizontal reflections to the Digits data set.
Раздел Hyperparameters задает стратегию (Exhaustive Sweep
) и гиперзначения параметров, чтобы использовать для эксперимента. Когда вы запускаете эксперимент, Experiment Manager обучает сеть с помощью каждой комбинации гиперзначений параметров, заданных в гипертаблице параметров. Этот пример использует два гиперпараметра, Network
и TrainingOptions
.
Network
задает сеть, чтобы обучаться. Возможные значения для этого гиперпараметра:
"7 layers"
— Простая сеть с 7 слоями, которая включает один сверточный блок, состоящий из
, convolution2dLayer
, и reluLayer
maxPooling2dLayer
"16 layers"
— Сеть 16 слоев, которая включает три сверточных блока, каждый состоящий из
, convolution2dLayer
, batchNormalizationLayer
, и reluLayer
maxPooling2dLayer
TrainingOptions
указывает, что набор опций раньше обучал сеть. Возможные значения для этого гиперпараметра:
"fast"
— Experiment Manager обучает сеть максимум для 10 эпох с начальной скоростью обучения 0,1.
"slow"
— Experiment Manager обучает сеть максимум для 15 эпох с начальной скоростью обучения 0,001.
Функция Setup конфигурирует обучающие данные, сетевую архитектуру и опции обучения для эксперимента. Чтобы смотреть функцию настройки, под Функцией Setup, нажимают Edit. Функция настройки открывается в редакторе MATLAB.
Вход к функции настройки является структурой с полями от гипертаблицы параметров. Функция настройки возвращает три выходных параметра, которые вы используете, чтобы обучить сеть для проблем классификации изображений. Функция настройки имеет три раздела.
Загрузите изображения загрузок Обучающих данных от набора данных Цифр, и разделяет этот набор данных в наборы обучения и валидации. Для обучающих данных этот пример создает
объект путем применения случайных переводов и горизонтальных отражений. Данные о валидации хранятся в augmentedImageDatastore
imageDatastore
объект без увеличения. Для получения дополнительной информации об этом наборе данных смотрите Наборы Данных изображения.
Архитектура Сети Define задает архитектуру для сверточной нейронной сети для классификации глубокого обучения. Этот пример обучает сеть, вы задаете для гиперпараметра Network
.
Укажите, что Опции обучения задают
объект для эксперимента. В этом примере значение вы задаете для гиперпараметра trainingOptions
TrainingOptions
определяет опции обучения 'InitialLearnRate'
и 'MaxEpochs'
.
Обратите внимание на то, что Experiment Manager не поддерживает параллельное выполнение, когда вы устанавливаете опцию обучения 'ExecutionEnvironment'
к 'multi-gpu'
или 'parallel'
или включите опции обучения 'DispatchInBackground'
. Для получения дополнительной информации смотрите, Конфигурируют Встроенный Учебный Эксперимент.
Раздел Metrics задает дополнительные функции, которые оценивают результаты эксперимента. Этот пример не включает пользовательских метрических функций.
Если вы имеете несколько графических процессоров, находите что-либо подобное выполнению, обычно увеличивает скорость вашего эксперимента. Для лучших результатов, прежде чем вы запустите свой эксперимент, начинают параллельный пул со стольких же рабочих сколько графические процессоры. Можно проверять количество доступных графических процессоров при помощи gpuDeviceCount
функция:
numGPUs = gpuDeviceCount("available");
parpool(numGPUs);
Однако, если у вас есть один графический процессор, все рабочие совместно используют тот графический процессор, таким образом, вы не получаете учебное ускорение, и вы увеличиваете возможности графического процессора, исчерпывающего память. Чтобы продолжить использовать MATLAB, в то время как вы обучаете глубокую сеть на одном графическом процессоре, начните параллельный пул с одного рабочего, прежде чем вы запустите свой эксперимент параллельно.
Используя графический процессор для глубокого обучения требует Parallel Computing Toolbox и поддерживаемого устройства графического процессора. Для получения дополнительной информации смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox).
Чтобы запустить ваш эксперимент, на панели инструментов Experiment Manager, нажимают Use Parallel и затем Запуск. Если нет никакого текущего параллельного пула, Experiment Manager запускает тот с помощью кластерного профиля по умолчанию. Experiment Manager затем выполняет несколько одновременных испытаний, в зависимости от количества параллельных доступных рабочих. Каждое испытание использует различную комбинацию гиперзначений параметров.
Таблица результатов показывает точность и потерю для каждого испытания.
В то время как эксперимент запускается, можно отследить его прогресс путем отображения учебного графика для каждого испытания. Выберите испытание и нажмите Training Plot.
Запуски Experiment Manager столько же одновременных испытаний сколько существуют рабочие в вашем параллельном пуле. Все другие испытания в вашем эксперименте ставятся в очередь для более поздней оценки. В то время как ваш эксперимент запускается, можно остановить испытание, которое запускается, или отмените испытание с очередями. В столбце Прогресса таблицы результатов кликните по значку красного квадрата для каждого испытания, которое вы хотите остановить или отменить.
Например, потеря валидации для испытаний, которые используют "7 layers"
сеть становится неопределенной только после нескольких итераций.
Продолжение обучения тем испытаниям не приводит ни к каким полезным результатам, таким образом, можно остановить те испытания, прежде чем обучение будет завершено. Experiment Manager продолжает обучение остающимся испытаниям.
Чтобы записать вашу причину остановки каждого испытания, добавьте аннотацию.
В таблице результатов щелкните правой кнопкой по ячейке Validation Loss для первого остановленного испытания.
Выберите Add Annotation.
В панели Аннотаций введите свои наблюдения в текстовое поле.
Повторите предыдущие шаги для второго остановленного испытания.
Когда обучение завершено, можно повторно выполнить испытание, которое вы остановили или отменили. В столбце Прогресса таблицы результатов кликните по зеленому треугольному значку для испытания.
В качестве альтернативы, чтобы повторно выполнить все испытания, которые вы отменили в панели инструментов Experiment Manager, нажимают Restart All Canceled.
В панели Браузера Эксперимента щелкните правой кнопкой по имени проекта и выберите Close Project. Experiment Manager закрывает все эксперименты и результаты, содержавшиеся в проекте.
augmentedImageDatastore
| batchNormalizationLayer
| convolution2dLayer
| maxPooling2dLayer
| reluLayer
| trainingOptions
| trainNetwork
| gpuDeviceCount
(Parallel Computing Toolbox) | parfeval
(Parallel Computing Toolbox) | parfor
(Parallel Computing Toolbox) | parpool
(Parallel Computing Toolbox)