Для большинства задач глубокого обучения можно использовать предварительно обученную сеть и адаптировать ее к собственным данным. Для примера, показывающего, как использовать передачу обучения, чтобы переобучить сверточную нейронную сеть, чтобы классифицировать новый набор изображений, смотрите, Обучают Нейронную сеть для глубокого обучения Классифицировать Новые Изображения. В качестве альтернативы можно создать и обучить нейронные сети с нуля с помощью layerGraph
объекты с trainNetwork
и trainingOptions
функции.
Если trainingOptions
функция не обеспечивает опции обучения, в которых вы нуждаетесь для своей задачи, затем можно создать пользовательский учебный цикл с помощью автоматического дифференцирования. Чтобы узнать больше, смотрите, Задают Пользовательские Учебные Циклы.
Если Deep Learning Toolbox™ не обеспечивает слои, вам нужно для вашей задачи (включая выходные слои, которые задают функции потерь), то можно создать пользовательский слой. Чтобы узнать больше, смотрите, Задают Пользовательские Слои Глубокого обучения. Для функций потерь, которые не могут быть заданы с помощью выходного слоя, можно задать потерю в пользовательском учебном цикле. Чтобы узнать больше, смотрите, Задают Функции потерь. Для сетей, которые не могут быть созданы с помощью графиков слоев, можно задать пользовательские сети как функцию. Чтобы узнать больше, смотрите, Задают Пользовательские Сети.
Пользовательские учебные циклы, функции потерь и сети используют автоматическое дифференцирование, чтобы автоматически вычислить градиенты модели. Чтобы узнать больше, смотрите Автоматический Фон Дифференцирования.
Для большинства задач можно управлять деталями алгоритма настройки с помощью trainingOptions
и trainNetwork
функции. Если trainingOptions
функция не предоставляет возможности, в которых вы нуждаетесь для своей задачи (например, пользовательское изучают расписание уровня), затем можно задать собственный учебный цикл с помощью автоматического дифференцирования.
Для примера, показывающего, как обучить сеть с пользовательским, изучают расписание уровня, видят, Обучат сеть Используя Пользовательский Учебный Цикл.
Чтобы обновить настраиваемые параметры, необходимо сначала вычислить градиенты потери относительно настраиваемых параметров.
Создайте функцию формы gradients = modelGradients(dlnet,dlX,dlT)
, где dlnet
сеть, dlX
входные предикторы, dlT
цели и gradients
возвращенные градиенты. Опционально, можно передать дополнительные аргументы функции градиентов (например, если функция потерь запрашивает дополнительную информацию), или возвратите дополнительные аргументы (например, метрики для графического вывода процесса обучения). Для моделей, заданных как функция, вы не должны передавать сеть как входной параметр.
Чтобы использовать автоматическое дифференцирование, вы вызываете dlgradient
вычислить градиент функции и dlfeval
настроить или обновить вычислительный график. Эти функции используют dlarray
управлять структурами данных и позволять проследить оценки.
Чтобы обновить сетевые веса, можно использовать следующие функции:
Функция | Описание |
---|---|
adamupdate | Обновите параметры с помощью адаптивной оценки момента (Адам) |
rmspropupdate | Обновите параметры с помощью корневого среднеквадратического распространения (RMSProp) |
sgdmupdate | Обновите параметры с помощью стохастического градиентного спуска с импульсом (SGDM) |
dlupdate | Обновите параметры с помощью пользовательской функции |
Для примера, показывающего, как создать, градиенты модели функционируют, чтобы обучить порождающую соперничающую сеть (GAN), которая генерирует изображения, смотрите, Обучают Порождающую соперничающую сеть (GAN).
При использовании dlnetwork
объекты, не используйте выходные слои, вместо этого необходимо вычислить потерю вручную в функции градиентов модели. Можно использовать следующие функции, чтобы вычислить потерю:
Функция | Описание |
---|---|
softmax | softmax операция активации применяет функцию softmax к размерности канала входных данных. |
sigmoid | Сигмоидальная операция активации применяет сигмоидальную функцию к входным данным. |
crossentropy | Перекрестная энтропийная операция вычисляет потерю перекрестной энтропии между сетевыми предсказаниями и целевыми значениями для задач классификации одно меток и мультиметок. |
mse | Половина операции среднеквадратической ошибки вычисляет половину потери среднеквадратической ошибки между сетевыми предсказаниями и целевыми значениями для задач регрессии. |
В качестве альтернативы можно использовать пользовательскую функцию потерь путем создания функции формы loss = myLoss(Y,T)
, где Y
сетевые предсказания, T
цели и loss
возвращенная потеря.
Используйте значение потерь когда вычислительные градиенты для обновления сетевых весов.
Для примера, показывающего, как создать, градиенты модели функционируют, чтобы обучить порождающую соперничающую сеть (GAN), которая генерирует изображения с помощью пользовательской функции потерь, смотрите, Обучают Порождающую соперничающую сеть (GAN).
Для большинства задач можно использовать предварительно обученную сеть или задать собственную сеть как график слоев. Чтобы узнать больше о предварительно обученных сетях, смотрите Предварительно обученные Глубокие нейронные сети. Для списка слоев, поддержанных dlnetwork
объекты, смотрите Поддерживаемые Слои.
Для архитектур, которые не могут быть созданы с помощью графиков слоев, можно задать пользовательскую модель как функцию формы [dlY1,...,dlYM] = model(dlX1,...,dlXN,parameters)
, где dlX1,...,dlXN
соответствуйте входным данным для N
входные параметры модели, parameters
содержит сетевые параметры и dlY1,...,dlYM
соответствуйте M
выходные параметры модели. Чтобы обучить пользовательскую сеть, используйте пользовательский учебный цикл
Если вы задаете пользовательскую сеть как функцию, то функция модели должна поддержать автоматическое дифференцирование. Можно использовать следующие операции глубокого обучения. Функции, перечисленные здесь, являются только подмножеством. Для полного списка функций та поддержка dlarray
введите, см. Список Функций с Поддержкой dlarray.
Функция | Описание |
---|---|
avgpool | Средняя операция объединения выполняет субдискретизацию путем деления входа на объединение областей и вычисление среднего значения каждой области. |
batchnorm | Операция нормализации партии. нормирует каждый входной канал через мини-пакет. Чтобы ускорить обучение сверточных нейронных сетей и уменьшать чувствительность к сетевой инициализации, используйте нормализацию партии. между сверткой и нелинейными операциями, такими как relu . |
crossentropy | Перекрестная энтропийная операция вычисляет потерю перекрестной энтропии между сетевыми предсказаниями и целевыми значениями для задач классификации одно меток и мультиметок. |
crosschannelnorm | Межканальная операция нормализации использует локальные ответы в различных каналах, чтобы нормировать каждую активацию. Межканальная нормализация обычно следует за relu операция. Межканальная нормализация также известна как локальную нормализацию ответа. |
dlconv | Операция свертки применяет скользящие фильтры к входным данным. Используйте 1D и 2D фильтры с разгруппированными или сгруппированными свертками и 3-D фильтры с разгруппированными свертками. |
dltranspconv | Транспонированная операция свертки сверхдискретизировала карты функции. |
fullyconnect | Полностью операция connect умножает вход на матрицу веса и затем добавляет вектор смещения. |
gru | Операция закрытого текущего модуля (GRU) позволяет сети изучать зависимости между временными шагами в данных о последовательности и временных рядах. |
leakyrelu | Текучий исправленный линейный модуль (ReLU), операция активации выполняет нелинейную пороговую операцию, где любое входное значение меньше, чем нуль умножается на фиксированный масштабный коэффициент. |
lstm | Операция долгой краткосрочной памяти (LSTM) позволяет сети изучать долгосрочные зависимости между временными шагами в данных о последовательности и временных рядах. |
maxpool | Максимальная операция объединения выполняет субдискретизацию путем деления входа на объединение областей и вычисление максимального значения каждой области. |
maxunpool | Максимальная операция необъединения не объединяет выход максимальной операции объединения путем повышающей дискретизации и дополнения нулями. |
mse | Половина операции среднеквадратической ошибки вычисляет половину потери среднеквадратической ошибки между сетевыми предсказаниями и целевыми значениями для задач регрессии. |
relu | Исправленный линейный модуль (ReLU), операция активации выполняет нелинейную пороговую операцию, где любое входное значение меньше, чем нуль обнуляется. |
sigmoid | Сигмоидальная операция активации применяет сигмоидальную функцию к входным данным. |
softmax | softmax операция активации применяет функцию softmax к размерности канала входных данных. |
dlarray
| dlfeval
| dlgradient
| dlnetwork