Обучите модель глубокого обучения в MATLAB

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

Совет

Для получения информации о рабочих процессах компьютерного зрения, в том числе для обнаружения объектов, смотрите Компьютерное Зрение с Использованием Глубокого Обучения. Для получения информации об импорте сетей и архитектур сетей из TensorFlow™-Keras, Caffe и формата модели ONNX™ (Open Neural Network Exchange), смотрите Глубокое Обучение Import and Export.

Методы обучения

В этой таблице приведены сведения о различных методах обучения.

МетодДополнительная информация
Используйте сеть напрямую

Если предварительно обученная сеть уже выполняет требуемую задачу, то вам не нужно переобучать сеть. Вместо этого можно делать предсказания с сетью непосредственно при помощи classify и predict функций.

Для получения примера смотрите Классификация изображений Используя GoogLeNet.

Обучите сеть с помощью trainingOptions и trainNetwork

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

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

Обучите сеть с помощью dlnetwork объект и пользовательский цикл обучения

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

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

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

Дополнительные сведения см. в разделе «Определение пользовательских циклов обучения, функций потерь и сетей».

Обучите сеть с помощью функции модели и пользовательского цикла обучения

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

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

Решения

Эта таблица содержит больше информации о каждом решении в графике потока.

РешениеДополнительная информация
Обеспечивают ли Deep Learning Toolbox™ подходящую предварительно обученную сеть?

Для большинства задач можно использовать или переобучить предварительно обученную сеть, такую как googlenet.

Список предварительно обученных нейронных сетей для глубокого обучения в MATLAB®, см. «Предварительно обученные глубокие нейронные сети». Можно использовать предварительно обученные сети непосредственно с новыми данными или переобучить их новыми данными для различных задач с помощью передачи обучения.

Можно ли использовать сеть без переобучения?

Если предварительно обученная сеть уже выполняет необходимую задачу, то можно использовать сеть непосредственно без переобучения. Для примера можно использовать googlenet сеть для классификации изображений в 1000 классах. Чтобы делать предсказания с сетью непосредственно, используйте classify и predict функций. Для получения примера смотрите Классификация изображений Используя GoogLeNet.

Если нужно переобучить сеть - например, классифицировать другой набор классов - то можно переобучить сеть с помощью передачи обучения.

Можете ли вы определить модель как массив слоев или график?

Можно задать большинство моделей глубокого обучения как массив слоев или график слоев. Другими словами, можно задать модель как набор слоев с выходами слоя, соединенными с другими входами слоя.

Некоторые сетевые архитектуры не могут быть определены как график слоев. Для примера сиамские сети требуют совместного использования веса и не могут быть определены как график слоев. Для этих сетей необходимо задать модель как функцию. Для получения примера смотрите Train Network Using Модели Function.

У сети есть только один выход?

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

Deep Learning Toolbox обеспечивает промежуточные слои, которые вам нужны?

Deep Learning Toolbox предоставляет множество различных слоев для задач глубокого обучения. Список слоев см. в Списке слоев глубокого обучения.

Если Deep Learning Toolbox предоставляет промежуточные слои (слои в середине сети), которые вам нужны, то можно задать сеть как массив слоев или график слоев, используя эти слои. В противном случае попробуйте задать неподдерживаемые слои как пользовательские. Для получения дополнительной информации смотрите Задать Пользовательские Слои Глубокого Обучения.

Можно ли определить неподдерживаемые промежуточные слои как пользовательские?

Если Deep Learning Toolbox не предоставляет необходимый слой, то можно попробовать задать пользовательский слой глубокого обучения. Для получения дополнительной информации смотрите Задать Пользовательские Слои Глубокого Обучения.

Если можно задать пользовательские слои для любых неподдерживаемых слоев, можно включить эти пользовательские слои в массив слоев или график слоев. В противном случае задайте модель глубокого обучения с помощью функции и обучите модель с помощью пользовательского цикла обучения. Для получения примера смотрите Train Network Using Модели Function.

Deep Learning Toolbox обеспечивает выходные слои, которые вам нужны?

Выходные слои определяют функцию потерь, используемую для обучения. Deep Learning Toolbox предоставляет различные выходные слои для задач глубокого обучения. Для примера, classificationLayer и regressionLayer. Список выхода слоев см. в разделе «Выход слои» на странице «Список слоев глубокого обучения».

Если Deep Learning Toolbox предоставляет необходимые вам выходные слои, можно задать график слоев, используя эти слои. В противном случае попробуйте задать все неподдерживаемые выходные слои как пользовательский слой. Для получения дополнительной информации смотрите Задать Пользовательские Слои Глубокого Обучения.

Можно ли определить неподдерживаемые выходные слои как пользовательские слои?

Если Deep Learning Toolbox не предоставляет нужный вам выходной слой, можно попробовать задать пользовательский выходной слой. Для получения дополнительной информации смотрите Задать Пользовательские Слои Глубокого Обучения.

Если можно задать пользовательский выходной слой для любых неподдерживаемых выходных слоев, можно включить эти пользовательские слои в массив слоев или график слоев. В противном случае обучите модель с помощью dlnetwork объект и пользовательский цикл обучения и задайте пользовательскую функцию потерь. Для получения примера смотрите Train Сеть с использованием пользовательского цикла обучения.

Делает trainingOptions функция обеспечивает опции вам нужно?

trainingOptions Функция предоставляет много опций для настройки процесса обучения. Если trainingOptions функция обеспечивает все опции вам для обучения, тогда вы можете обучить нейронную сеть для глубокого обучения используя trainNetwork функция. Для получения примера смотрите Создание Простой сети глубокого обучения для классификации.

Если trainingOptions функция не предоставляет необходимую опцию обучения, например, пользовательское расписание скорости обучения, тогда можно задать пользовательский цикл обучения с помощью dlnetwork объект. Для получения примера смотрите Train Сеть с использованием пользовательского цикла обучения.

См. также

|

Похожие темы