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

Для большинства задач глубокого обучения можно использовать предварительно обученную сеть и адаптировать ее к собственным данным. Для примера, показывающего, как использовать передачу обучения, чтобы переобучить сверточную нейронную сеть, чтобы классифицировать новый набор изображений, смотрите, Обучают Нейронную сеть для глубокого обучения Классифицировать Новые Изображения. В качестве альтернативы можно создать и обучить нейронные сети с нуля с помощью 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Сигмоидальная операция активации применяет сигмоидальную функцию к входным данным.
softmaxsoftmax операция активации применяет функцию softmax к размерности канала входных данных.

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

| | |

Похожие темы