TrainingOptionsADAM

Опции обучения для оптимизатора Адама

Описание

Опции обучения для Адама (адаптивная оценка момента) оптимизатор, включая информацию о темпе обучения, фактор регуляризации L2 и мини-пакетный размер.

Создание

Создайте TrainingOptionsADAM объект с помощью trainingOptions и определение 'adam' как solverName входной параметр.

Свойства

развернуть все

Графики и отображение

Графики отобразиться во время сетевого обучения, заданного как одно из следующего:

  • 'none' — Не отображайте графики во время обучения.

  • 'training-progress'— Постройте процесс обучения. График показывает мини-пакетную потерю и точность, потерю валидации и точность и дополнительную информацию о процессе обучения. График имеет кнопку остановки в верхнем правом углу. Нажмите кнопку, чтобы остановить обучение и возвратить текущее состояние сети.

Индикатор, чтобы отобразить информацию о процессе обучения в командном окне, заданном как 1 TRUE) или 0 ложь).

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

Типы данных: логический

Частота многословной печати, которая является количеством итераций между печатью к командному окну, заданному как положительное целое число. Это свойство только оказывает влияние когда Verbose значение равняется true.

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

Мини-опции пакета

Максимальное количество эпох, чтобы использовать в обучении, заданном как положительное целое число.

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

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

Опция для перестановки данных, заданная как одно из следующего:

  • 'once' — Переставьте данные об обучении и валидации однажды обучение.

  • 'never' — Не переставляйте данные.

  • 'every-epoch' — Переставьте обучающие данные перед каждой учебной эпохой и переставьте данные о валидации перед каждой сетевой валидацией. Если мини-пакетный размер равномерно не делит количество учебных выборок, то trainNetwork отбрасывает обучающие данные, который не помещается в итоговый полный мини-пакет каждой эпохи. Установите Shuffle значение к 'every-epoch' постараться не отбрасывать те же данные каждая эпоха.

Валидация

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

Эта опция поддерживает сети с одним входом только.

Данные изображения

Для данных изображения задайте данные о валидации как одно из следующего:

Входной параметрОписаниеБольше информации
ImageDatastore

ImageDatastore объект с categorical метки.

imds аргумент trainNetwork
DatastoreDatastore, который возвращает данные в ячейке таблицы 2D столбца или массиве 2D ячейки столбца, где эти два столбца задают сетевые входные параметры и ожидаемые ответы, соответственно.ds аргумент trainNetwork
Таблица

Таблица, где первый столбец содержит или каналы передачи изображения или изображения и последующие столбцы, содержит ответы.

tbl аргумент trainNetwork
Массив ячеек {X,Y}X

Числовой массив изображений.

X аргумент trainNetwork
Y

Категориальный вектор меток, матрица числовых ответов или массив изображений.

Y аргумент trainNetwork

Последовательность и данные временных рядов

Для последовательности и данных временных рядов, задайте данные о валидации как одно из следующего:

Входной параметрОписаниеБольше информации
Массив ячеек {sequences,Y}sequences

Массив ячеек последовательностей или данных временных рядов.

sequences аргумент trainNetwork
Y

Категориальный вектор меток, массив ячеек категориальных последовательностей, матрица числовых ответов или массив ячеек числовых последовательностей.

Y аргумент trainNetwork
Таблица

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

tbl аргумент trainNetwork

Во время обучения, trainNetwork вычисляет точность валидации и потерю валидации на данных о валидации. Чтобы задать частоту валидации, используйте 'ValidationFrequency' аргумент пары "имя-значение". Можно также использовать данные о валидации, чтобы остановить обучение автоматически, когда потеря валидации прекращает уменьшаться. Чтобы включить автоматическую остановку валидации, используйте 'ValidationPatience' аргумент пары "имя-значение".

Если ваша сеть имеет слои, которые ведут себя по-другому во время прогноза, чем во время обучения (например, слои уволенного), то точность валидации может быть выше, чем учебная (мини-пакетная) точность.

Данные о валидации переставляются согласно 'Shuffle' значение. Если 'Shuffle' значение равняется 'every-epoch', затем данные о валидации переставляются перед каждой сетевой валидацией.

Частота сетевой валидации в количестве итераций, заданных как положительное целое число.

ValidationFrequency значение является количеством итераций между оценками метрик валидации.

Терпение остановки валидации сетевого обучения, заданного как положительное целое число или Inf.

'ValidationPatience' значение является числом раз, что потеря на наборе валидации может быть больше, чем или равняться ранее самой маленькой потере, прежде чем сетевое обучение остановится.

Опции решателя

Начальный темп обучения используется в обучении, заданном как положительная скалярная величина. Если темп обучения является слишком низким, то обучение занимает много времени. Если темп обучения слишком высок, то обучение может достигнуть субоптимального результата.

Настройки для расписания темпа обучения, заданного как структура. LearnRateScheduleSettings имеет поле Method, который задает тип метода для корректировки темпа обучения. Возможные методы:

  • 'none' — Темп обучения является постоянным в течение обучения.

  • 'piecewise' — Темп обучения понижается периодически во время обучения.

Если Method 'piecewise', затем LearnRateScheduleSettings содержит еще два поля:

  • DropRateFactor — Мультипликативный фактор, которым темп обучения понижается во время обучения

  • DropPeriod — Номер эпох, который передает между корректировками темпа обучения во время обучения

Задайте настройки для уровня расписания изучения с помощью trainingOptions.

Типы данных: struct

Фактор для L2 regularizer (затухание веса), заданный как неотрицательный скаляр.

Можно задать множитель для L2 regularizer для сетевых слоев learnable параметрами.

Уровень затухания скользящего среднего значения градиента, заданного как скаляр от 0 до 1. Для получения дополнительной информации о других решателях, смотрите Стохастический Градиентный спуск.

Уровень затухания скользящего среднего значения градиента в квадрате, заданного как скаляр от 0 до 1. Для получения дополнительной информации о других решателях, смотрите Стохастический Градиентный спуск.

Смещение знаменателя, заданное как положительная скалярная величина. Решатель добавляет смещение к знаменателю в сетевых обновлениях параметра, чтобы избежать деления на нуль.

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

  • true – Сбросьте входную статистику нормализации слоя и повторно вычислите их в учебное время.

  • false – Вычислите статистику нормализации в учебное время, когда они будут пусты.

Усечение градиента

Положительный порог для градиента, заданного как положительная скалярная величина или Inf. Когда градиент превышает значение GradientThreshold, затем градиент отсекается согласно GradientThresholdMethod.

Пороговый метод градиента раньше отсекал значения градиента, которые превышают порог градиента, заданный как одно из следующего:

  • 'l2norm' — Если норма L2 градиента learnable параметра больше, чем GradientThreshold, затем масштабируйте градиент так, чтобы норма L2 равнялась GradientThreshold.

  • 'global-l2norm' — Если глобальная норма L2, L, больше, чем GradientThreshold, затем масштабируйте все градиенты фактором GradientThreshold/L. Глобальная норма L2 рассматривает все learnable параметры.

  • 'absolute-value' — Если абсолютное значение отдельной частной производной в градиенте learnable параметра больше, чем GradientThreshold, затем масштабируйте частную производную, чтобы иметь величину, равную GradientThreshold и сохраните знак частной производной.

Для получения дополнительной информации смотрите, что Градиент Отсекает.

Опции последовательности

Опция, чтобы заполнить, обрежьте или разделите входные последовательности, заданные как одно из следующего:

  • 'longest' — Заполните последовательности в каждом мини-пакете, чтобы иметь ту же длину как самая длинная последовательность. Эта опция не отбрасывает данных, хотя дополнение может ввести шум сети.

  • 'shortest' — Усеченные последовательности в каждом мини-пакете, чтобы иметь ту же длину как самая короткая последовательность. Эта опция гарантирует, что никакое дополнение не добавляется, за счет отбрасывания данных.

  • Положительное целое число — Для каждого мини-пакета, заполните последовательности к самому близкому кратному заданная длина, которая больше самой долгой длины последовательности в мини-пакете, и затем разделяет последовательности в меньшие последовательности заданной длины. Если разделение происходит, то программное обеспечение создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не умещаются в памяти. В качестве альтернативы попытайтесь сократить количество последовательностей на мини-пакет путем установки 'MiniBatchSize' опция к нижнему значению.

Чтобы узнать больше об эффекте дополнения, усечение и разделение входных последовательностей, видят, что Последовательность Дополняет, Усечение, и Разделяет.

Направление дополнения или усечения, заданного как одно из следующего:

  • 'right' — Заполните или обрежьте последовательности справа. Последовательности запускают одновременно шаг, и программное обеспечение обрезает или добавляет дополнение в конец последовательностей.

  • 'left' — Заполните или обрежьте последовательности слева. Программное обеспечение обрезает или добавляет дополнение в запуск последовательностей так, чтобы конец последовательностей одновременно продвинулся.

Поскольку слои LSTM обрабатывают данные о последовательности один временной шаг за один раз, когда слой OutputMode свойством является 'last', любое дополнение в итоговых временных шагах может негативно влиять на слой выход. Чтобы заполнить или обрезать данные о последовательности слева, установите 'SequencePaddingDirection' опция к 'left'.

Для сетей от последовательности к последовательности (когда OutputMode свойством является 'sequence' для каждого слоя LSTM), любой дополняющий в первых временных шагах может негативно влиять на прогнозы для более ранних временных шагов. Чтобы заполнить или обрезать данные о последовательности справа, установите 'SequencePaddingDirection' опция к 'right'.

Чтобы узнать больше об эффекте дополнения, усечение и разделение входных последовательностей, видят, что Последовательность Дополняет, Усечение, и Разделяет.

Значение, которым можно заполнить входные последовательности, заданные как скаляр. Опция допустима только когда SequenceLength 'longest' или положительное целое число. Не заполняйте последовательности NaN, потому что выполнение так может распространить ошибки в сети.

Аппаратные опции

Аппаратный ресурс для того, чтобы обучить сеть, заданный как одно из следующего:

  • 'auto' — Используйте графический процессор, если вы доступны. В противном случае используйте центральный процессор.

  • 'cpu' — Используйте центральный процессор.

  • 'gpu' — Используйте графический процессор.

  • 'multi-gpu' — Используйте несколько графических процессоров на одной машине, с помощью локального параллельного пула на основе кластерного профиля по умолчанию. Если нет никакого текущего параллельного пула, программное обеспечение запускает параллельный пул с размера пула, равного количеству доступных графических процессоров.

  • 'parallel' — Используйте локальный или удаленный параллельный пул на основе своего кластерного профиля по умолчанию. Если нет никакого текущего параллельного пула, программное обеспечение запускает тот с помощью кластерного профиля по умолчанию. Если пул имеет доступ к графическим процессорам, то только рабочие с помощью уникального графического процессора выполняют учебный расчет. Если пул не имеет графических процессоров, то обучение происходит на всех доступных рабочих центрального процессора вместо этого.

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

Графический процессор, мультиграфический процессор и параллельные опции требуют Parallel Computing Toolbox™. Чтобы использовать графический процессор в глубоком обучении, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Если вы выбираете одну из этих опций и Parallel Computing Toolbox, или подходящий графический процессор не доступен, то программное обеспечение возвращает ошибку.

Чтобы видеть улучшение производительности когда обучение параллельно, попытайтесь увеличить MiniBatchSize и InitialLearnRate опции обучения количеством графических процессоров.

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

Задайте среду выполнения с помощью trainingOptions.

Типы данных: char | string

Деление загрузки рабочего для графических процессоров или центральных процессоров, заданных как скаляр от 0 до 1, положительное целое число или числовой вектор. Это свойство оказывает влияние только когда ExecutionEnvironment значение равняется 'multi-gpu' или 'parallel'.

Контрольные точки

Путь, где сети контрольной точки сохранены, заданы как вектор символов.

Типы данных: char

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

Поле Описание
EpochТекущий номер эпохи
IterationТекущий номер итерации
TimeSinceStartВремя в секундах начиная с запуска обучения
TrainingLossТекущая мини-пакетная потеря
ValidationLossПотеря на данных о валидации
BaseLearnRateТекущий основной темп обучения
TrainingAccuracy Точность на текущем мини-пакете (сети классификации)
TrainingRMSERMSE на текущем мини-пакете (сети регрессии)
ValidationAccuracyТочность на данных о валидации (сети классификации)
ValidationRMSERMSE на данных о валидации (сети регрессии)
StateТекущее учебное состояние, с возможным значением "start", "iteration", или "done".

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

Можно использовать выходные функции, чтобы отобразить или построить информацию о прогрессе или остановить обучение. Чтобы остановить обучение рано, заставьте свою выходную функцию возвратить true. Если какая-либо выходная функция возвращает true, затем учебные концы и trainNetwork возвращает последнюю сеть. Для примера, показывающего, как использовать выходные функции, смотрите, Настраивают Выход Во время Обучения Нейронной сети для глубокого обучения.

Типы данных: function_handle | cell

Примеры

свернуть все

Создайте набор опций для обучения нейронная сеть с помощью оптимизатора Адама. Определите максимальный номер эпох для обучения к 20 и используйте мини-пакет с 64 наблюдениями в каждой итерации. Задайте темп обучения и уровень затухания скользящего среднего значения градиента в квадрате. Включите график процесса обучения.

options = trainingOptions('adam', ...
    'InitialLearnRate',3e-4, ...
    'SquaredGradientDecayFactor',0.99, ...
    'MaxEpochs',20, ...
    'MiniBatchSize',64, ...
    'Plots','training-progress')
options = 
  TrainingOptionsADAM with properties:

           GradientDecayFactor: 0.9000
    SquaredGradientDecayFactor: 0.9900
                       Epsilon: 1.0000e-08
              InitialLearnRate: 3.0000e-04
     LearnRateScheduleSettings: [1x1 struct]
              L2Regularization: 1.0000e-04
       GradientThresholdMethod: 'l2norm'
             GradientThreshold: Inf
                     MaxEpochs: 20
                 MiniBatchSize: 64
                       Verbose: 1
              VerboseFrequency: 50
                ValidationData: []
           ValidationFrequency: 50
            ValidationPatience: Inf
                       Shuffle: 'once'
                CheckpointPath: ''
          ExecutionEnvironment: 'auto'
                    WorkerLoad: []
                     OutputFcn: []
                         Plots: 'training-progress'
                SequenceLength: 'longest'
          SequencePaddingValue: 0
      SequencePaddingDirection: 'right'
          DispatchInBackground: 0
       ResetInputNormalization: 1

Ссылки

[1] Kingma, Дидерик и Джимми Ба. "Адам: метод для стохастической оптимизации". arXiv предварительно распечатывают arXiv:1412.6980 (2014).

Введенный в R2018a

Для просмотра документации необходимо авторизоваться на сайте