Deep Network Designer

Спроектируйте, визуализируйте и обучите нейронные сети для глубокого обучения

Описание

Приложение Deep Network Designer позволяет вам создать, визуализировать, отредактировать и обучить нейронные сети для глубокого обучения. Используя это приложение, вы можете:

  • Создайте, импортируйте, отредактируйте, и сети объединения.

  • Загрузите предварительно обученные сети и отредактируйте их для передачи обучения.

  • Просмотрите и отредактируйте свойства слоя и добавьте новые слои и связи.

  • Анализируйте сеть, чтобы гарантировать, что сетевая архитектура задана правильно, и обнаружьте проблемы перед обучением.

  • Импортируйте и визуализируйте хранилища данных и данные изображения для обучения и валидации.

  • Примените увеличения, чтобы отобразить обучающие данные классификации и визуализировать распределение меток класса.

  • Обучите нейронные сети и контролируйте обучение с графиками точности, потери и метрик валидации.

  • Экспорт обучил нейронные сети к рабочей области или к Simulink®.

  • Сгенерируйте MATLAB® код для того, чтобы создать и обучить нейронные сети.

Deep Network Designer app

Откройте приложение Deep Network Designer

  • Панель инструментов MATLAB: На вкладке Apps, под Machine Learning and Deep Learning, кликают по значку приложения.

  • Командная строка MATLAB: Войти deepNetworkDesigner.

Примеры

развернуть все

Исследуйте простую предварительно обученную сеть классификации изображений в Deep Network Designer.

Откройте приложение и выберите предварительно обученную сеть. Можно также загрузить предварительно обученную сеть путем выбора вкладки Designer и нажатия на New. Если необходимо загрузить сеть, то нажмите Install, чтобы открыть Add-On Explorer.

Совет

Чтобы начать, попытайтесь выбрать одну из более быстрых сетей, таких как SqueezeNet или GoogLeNet. Если вы получаете понимание, которого настройки работают хорошо, пробуют более точную сеть, такую как Inception-v3 или ResNet, и видят, улучшает ли это ваши результаты. Для получения дополнительной информации о выборе предварительно обученной сети смотрите Предварительно обученные Глубокие нейронные сети.

Deep Network Designer start page showing available networks

В панели Designer визуализируйте и исследуйте сеть. Для списка доступных предварительно обученных сетей и как сравнить их, смотрите Предварительно обученные Глубокие нейронные сети.

Deep Network Designer displaying a pretrained network

Для получения информации о построении сетей с помощью Deep Network Designer смотрите Сети Сборки с Deep Network Designer.

Подготовьте сеть к передаче обучения путем редактирования его в Deep Network Designer.

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

Откройте Deep Network Designer с SqueezeNet.

deepNetworkDesigner(squeezenet)

Чтобы подготовить сеть к передаче обучения, замените последний learnable слой и итоговый слой классификации. Для SqueezeNet последний learnable слой является 2D сверточным слоем под названием 'conv10'.

  • Перетащите новый convolution2dLayer на холст. Установите свойство FilterSize на 1,1 и свойство NumFilters к новому количеству классов.

  • Измените скорости обучения так, чтобы изучение было быстрее в новом слое, чем в переданных слоях путем увеличения значений BiasLearnRateFactor и WeightLearnRateFactor.

  • Удалите последний convolution2dLayer и соедините свой новый слой вместо этого.

    Convolution 2-D layer selected in Deep Network Designer. FilterSize is set to 1,1 and NumFilters is set to 5.

Совет

Для большинства предварительно обученных сетей (например, GoogLeNet) последний learnable слой является полносвязным слоем. Чтобы подготовить сеть к передаче обучения, замените полносвязный слой на новый полносвязный слой и установите свойство OutputSize на новое количество классов. Для примера смотрите Начало работы с Deep Network Designer.

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

Classification layer selected in Deep Network Designer. OutputSize is set to auto.

Проверяйте свою сеть путем нажатия на Analyze во вкладке Designer. Сеть готова к обучению, если Deep Learning Network Analyzer сообщает о нулевых ошибках. Для примера, показывающего, как обучить сеть, чтобы классифицировать новые изображения, смотрите Передачу обучения с Deep Network Designer.

Для справки понимающие и редактирующие свойства слоя кликните по значку справки рядом с именем слоя.

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

Cross channel normalization layer selected in Deep Network Designer

Для получения дополнительной информации о свойствах слоя, смотрите Список слоев глубокого обучения.

Добавьте слои от рабочей области до сети в Deep Network Designer.

В Deep Network Designer можно создать сеть путем перетаскивания встроенных слоев от Layer Library до панели Designer и соединения их. Можно также добавить пользовательские слои от рабочей области до сети в панели Designer. Предположим, что вам сохранили пользовательский слой в переменной myCustomLayer.

  1. Нажмите New во вкладке Designer.

  2. Сделайте паузу на From Workspace и нажмите Import.

  3. Выберите myCustomLayer и нажмите OK.

  4. Нажмите Add.

Приложение добавляет пользовательский слой в верхнюю часть панели Designer. Видеть новый слой, увеличение использования мыши или нажимать Zoom in.

Соедините myCustomLayer с сетью в панели Designer. Для примера, показывающего, как сборка сеть с пользовательским слоем в Deep Network Designer, смотрите Импорт Пользовательский Слой в Deep Network Designer.

Можно также объединить сети в Deep Network Designer. Например, можно создать сеть семантической сегментации путем объединения предварительно обученной сети с подсетью декодера.

Импортируйте данные в Deep Network Designer для обучения.

Можно использовать вкладку Data Deep Network Designer, чтобы импортировать данные об обучении и валидации. Deep Network Designer поддерживает импорт объектов datastore и данных изображения. Выберите метод импорта на основе типа задачи.

ЗадачаТип данныхМетод импорта данныхВизуализация в качестве примера
Отобразите классификацию

ImageDatastore объект или папка с подпапками, содержащими изображения для каждого класса. Метки класса получены с подымен папок.

Выберите Import Data> Import Image Data.

Import Image Data dialog box

Можно выбрать опции увеличения и задать данные о валидации в диалоговом окне Import Image Data. Для получения дополнительной информации смотрите, Импортируют Данные в Deep Network Designer.

Data tab of Deep Network Designer displaying a histogram of the class labels and a selection of random images from the imported data

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

Datastore.

Для других расширенных рабочих процессов используйте подходящий объект datastore. Например, AugmentedImageDatastore, CombinedDatastore, pixelLabelImageDatastore (Computer Vision Toolbox) или пользовательский datastore.

Можно импортировать и обучить любой объект datastore, который работает с trainNetwork функция. Для получения дополнительной информации о построении и использовании объектов datastore для применения глубокого обучения, смотрите Хранилища данных для Глубокого обучения.

Выберите Import Data> Import Datastore.

Import Datastore dialog box

Можно задать данные о валидации в диалоговом окне Import Datastore. Для получения дополнительной информации смотрите, Импортируют Данные в Deep Network Designer.

Data tab of Deep Network Designer displaying a preview of the first five observations in the datastore

Обучите глубокие нейронные сети с помощью Deep Network Designer.

Используя Deep Network Designer, можно обучить сеть с помощью данных изображения или любого объекта datastore, который работает с trainNetwork функция. Например, можно обучить сеть семантической сегментации или мультивходную сеть использование CombinedDatastore объект. Для получения дополнительной информации об импортировании данных в Deep Network Designer, смотрите, Импортируют Данные в Deep Network Designer.

Чтобы обучить сеть на данных, импортированных в Deep Network Designer, на вкладке Training, нажимают Train. Отображения приложения анимированный график процесса обучения. График показывает мини-пакетную потерю и точность, потерю валидации и точность и дополнительную информацию о процессе обучения. График имеет кнопку остановки в верхнем правом углу. Нажмите кнопку, чтобы остановить обучение и возвратить текущее состояние сети.

Training progress plot in Deep Network Designer

Для получения дополнительной информации смотрите, Обучают нейронные сети Используя Deep Network Designer.

Если вы требуете большего управления обучением, нажмите Training Options, чтобы выбрать учебные настройки. Для получения дополнительной информации о выборе опций обучения, смотрите trainingOptions.

Training Options dialog box in Deep Network Designer

Для примера, показывающего, как обучить сеть классификации изображений, смотрите Передачу обучения с Deep Network Designer. Для примера, показывающего, как обучить сеть LSTM от последовательности к последовательности, смотрите, Обучат сеть для Прогнозирования Временных рядов Используя Deep Network Designer.

Чтобы обучить сеть на данных, не поддержанных Deep Network Designer, выберите вкладку Designer и нажмите Export, чтобы экспортировать начальную сетевую архитектуру. Можно затем программно обучить сеть, например, с помощью пользовательского учебного цикла.

Экспортируйте сетевую архитектуру, созданную в Deep Network Designer к рабочей области или Simulink, и сгенерируйте код, чтобы воссоздать сеть и обучение.

  • Чтобы экспортировать сетевую архитектуру с начальными весами к рабочей области, на вкладке Designer, нажимают Export. В зависимости от сетевой архитектуры Deep Network Designer экспортирует сеть как LayerGraph lgraph или как Layer объект layers.

  • Чтобы экспортировать сеть, обученную в Deep Network Designer к рабочей области, на вкладке Training, нажимают Export. Deep Network Designer экспортирует обучившую сеть архитектуру как DAGNetwork объект trainedNetwork. Deep Network Designer также экспортирует результаты обучения, такие как обучение и точность валидации, как массив структур trainInfoStruct.

  • Чтобы экспортировать сеть, обученную в Deep Network Designer к Simulink, на вкладке Training, нажимают Export> Export to Simulink. Deep Network Designer сохраняет обучивший сеть как MAT-файл и генерирует блоки Simulink, представляющие обучивший сеть. Сгенерированные блоки зависят от типа обученной сети.

    • Image Classifier — Классифицируйте данные с помощью обученной глубокой нейронной сети.

    • Predict — Предскажите ответы с помощью обученной глубокой нейронной сети.

    • Stateful Classify — Классифицируйте данные с помощью обученной рекуррентной нейронной сети.

    • Stateful Predict — Предскажите ответы с помощью обученной рекуррентной нейронной сети.

Воссоздать сеть, которую вы создаете и обучаете в Deep Network Designer, генерируете код MATLAB.

  • Чтобы воссоздать слоя сети, на вкладке Designer, выбирают Export> Generate Code.

  • Чтобы воссоздать слоя сети, включая любые настраиваемые параметры, на вкладке Designer, выбирают Export> Generate Code with Initial Parameters.

  • Чтобы воссоздать сеть, импорт данных и обучение, на вкладке Training, выбирают Export> Generate Code for Training.

После генерации скрипта можно выполнить следующие задачи.

  • Чтобы воссоздать слоя сети, созданные в приложении, запустите скрипт. Если вы сгенерировали учебный скрипт, запущение скрипта также реплицирует сетевое обучение.

  • Исследуйте код, чтобы изучить, как к слоям create и connect программно, и как обучить глубокую сеть.

  • Чтобы изменить слои, отредактируйте код. Можно также запустить скрипт и импортировать сеть назад в приложение для редактирования.

Для получения дополнительной информации смотрите, Генерируют код MATLAB от Deep Network Designer.

Можно также использовать сгенерированный скрипт в качестве начальной точки, чтобы создать эксперименты глубокого обучения, которые развертываются через область значений гиперзначений параметров или используют Байесовую оптимизацию, чтобы найти оптимальные опции обучения. Для примера, показывающего, как использовать Experiment Manager, чтобы настроить гиперпараметры сети, обученной в Deep Network Designer, смотрите, Адаптируют Код, Сгенерированный в Deep Network Designer для Использования в Experiment Manager.

Связанные примеры

Программируемое использование

развернуть все

deepNetworkDesigner открывает приложение Deep Network Designer. Если Deep Network Designer уже открыт, deepNetworkDesigner приносит особое внимание на приложение.

deepNetworkDesigner(net) открывает приложение Deep Network Designer и загружает заданную сеть в приложение. Сеть может быть серийной сетью, сетью DAG, графиком слоев или массивом слоев.

Например, откройте Deep Network Designer с предварительно обученной сетью SqueezeNet.

net = squeezenet;
deepNetworkDesigner(net);

Если Deep Network Designer уже открыт, deepNetworkDesigner(net) приносит особое внимание на приложение и предлагает вам добавлять к или заменять любую существующую сеть.

Советы

Чтобы обучить несколько сетей и сравнить результаты, попробуйте Experiment Manager.

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

Функции

Введенный в R2018b