Для большинства задач глубокого обучения можно использовать предварительно обученную сеть и адаптировать ее к собственным данным. Для примера, показывающего, как использовать передачу, учащуюся переобучать сверточную нейронную сеть, чтобы классифицировать новый набор изображений, смотрите, Обучают Нейронную сеть для глубокого обучения Классифицировать Новые Изображения. В качестве альтернативы можно создать и обучить нейронные сети с нуля с помощью layerGraph
объекты с trainNetwork
и trainingOptions
функции.
Если trainingOptions
функция не обеспечивает опции обучения, в которых вы нуждаетесь для своей задачи, затем можно создать пользовательский учебный цикл с помощью автоматического дифференцирования. Чтобы узнать больше, смотрите, Задают Пользовательские Учебные Циклы.
Если Deep Learning Toolbox™ не обеспечивает слои, вам нужно для вашей задачи (включая выходные слои, которые задают функции потерь), то можно создать пользовательский слой. Чтобы узнать больше, смотрите, Задают Пользовательские Слои Глубокого обучения. Для функций потерь, которые не могут быть заданы с помощью выходного слоя, можно задать потерю в пользовательском учебном цикле. Чтобы узнать больше, смотрите, Задают Функции потерь. Для сетей, которые не могут быть созданы с помощью графиков слоя, можно задать пользовательские сети как функцию. Чтобы узнать больше, смотрите, Задают Пользовательские Сети.
Пользовательские учебные циклы, функции потерь и сети используют автоматическое дифференцирование, чтобы автоматически вычислить градиенты модели. Чтобы узнать больше, смотрите Автоматический Фон Дифференцирования.
Для большинства задач можно управлять учебными деталями алгоритма с помощью trainingOptions
и trainNetwork
функции. Если trainingOptions
функция не предоставляет возможности, в которых вы нуждаетесь для своей задачи (например, пользовательское изучают расписание уровня), затем можно задать собственный учебный цикл с помощью автоматического дифференцирования.
Для примера, показывающего, как обучить сеть с пользовательским, изучают расписание уровня, видят, Обучат сеть Используя Пользовательский Учебный Цикл.
Чтобы обновить learnable параметры, необходимо сначала вычислить градиенты потери относительно learnable параметров.
Создайте функцию формы 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 | Перекрестная энтропийная операция вычисляет категориальную перекрестную энтропийную потерю между сетевыми прогнозами и целевыми значениями для многоклассовых задач классификации. |
dlconv | Операция свертки применяет скользящие фильтры к входным данным. Используйте 1D и 2D фильтры с разгруппированными или сгруппированными свертками и 3-D фильтры с разгруппированными свертками. |
dltranspconv | Транспонированная операция свертки сверхдискретизировала карты функции. |
fullyconnect | Полностью операция connect умножает вход на матрицу веса и затем добавляет вектор смещения. |
leakyrelu | Текучий исправленный линейный модуль (ReLU), операция активации выполняет нелинейную пороговую операцию, где любое входное значение меньше, чем нуль умножается на фиксированный масштабный коэффициент. |
lstm | Операция долгой краткосрочной памяти (LSTM) позволяет сети изучать долгосрочные зависимости между временными шагами в данных о последовательности и временных рядах. |
maxpool | Максимальная операция объединения выполняет субдискретизацию путем деления входа на объединение областей и вычисление максимального значения каждой области. |
maxunpool | Максимальная операция необъединения не объединяет выход максимальной операции объединения путем повышающей дискретизации и дополнения нулями. |
mse | Половина операции среднеквадратической ошибки вычисляет половину потери среднеквадратической ошибки между сетевыми прогнозами и целевыми значениями для проблем регрессии. |
relu | Исправленный линейный модуль (ReLU), операция активации выполняет нелинейную пороговую операцию, где любое входное значение меньше, чем нуль обнуляется. |
sigmoid | Сигмоидальная операция активации применяет сигмоидальную функцию к входным данным. |
softmax | softmax операция активации применяет функцию softmax к размерности канала входных данных. |
dlarray
| dlfeval
| dlgradient
| dlnetwork