Задайте пользовательские учебные циклы, функции потерь и сети

Для большинства задач глубокого обучения можно использовать предварительно обученную сеть и адаптировать ее к собственным данным. Для примера, показывающего, как использовать передачу, учащуюся переобучать сверточную нейронную сеть, чтобы классифицировать новый набор изображений, смотрите, Обучают Нейронную сеть для глубокого обучения Классифицировать Новые Изображения. В качестве альтернативы можно создать и обучить нейронные сети с нуля с помощью layerGraph объекты с trainNetwork и trainingOptions функции.

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

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

Пользовательские учебные циклы, функции потерь и сети используют автоматическое дифференцирование, чтобы автоматически вычислить градиенты модели. Чтобы узнать больше, смотрите Автоматический Фон Дифференцирования.

Задайте пользовательские учебные циклы

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

Для примера, показывающего, как обучить сеть с пользовательским, изучают расписание уровня, видят, Обучат сеть Используя Пользовательский Учебный Цикл.

Обновите параметры Learnable Используя автоматическое дифференцирование

Чтобы обновить 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 к размерности канала входных данных.

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

| | |

Похожие темы