Варианты обучения для оптимизатора RMSProp
Варианты обучения для оптимизатора RMSProp (среднеквадратичное распространение), включая информацию о скорости обучения, коэффициент регуляции L2 и размер мини-партии.
Создать TrainingOptionsRMSProp объект с использованием trainingOptions и определение 'rmsprop' в качестве solverName входной аргумент.
Plots - Графики для отображения во время обучения сети'none' | 'training-progress'Графики для отображения во время обучения сети, указанные как одно из следующих:
'none' - Не отображать графики во время обучения.
'training-progress'- Ход обучения на участке. На графике показаны потери и точность мини-партии, потери и точность проверки и дополнительная информация о ходе обучения. В
верхнем правом углу графика имеется кнопка остановки. Нажмите кнопку, чтобы остановить обучение и вернуть текущее состояние сети.
Verbose - Индикатор для отображения информации о ходе обучения1 | 0Индикатор отображения информации о ходе обучения в командном окне, указанный как 1 (true) или 0 (false).
Отображаемая информация включает номер эпохи, номер итерации, прошедшее время, потери мини-партии, точность мини-партии и базовую скорость обучения. При обучении регрессионной сети вместо точности отображается среднеквадратическая ошибка (RMSE). При проверке сети во время обучения отображаемая информация также включает потерю проверки и точность проверки (или RMSE).
Типы данных: logical
VerboseFrequency - Периодичность многословной печатиЧастота подробной печати, которая представляет собой число итераций между печатью в командное окно, указанное как положительное целое число. Это свойство действует только в том случае, если Verbose значение равно true.
При проверке сети во время обучения trainNetwork печатается в окне команд каждый раз при проверке.
MaxEpochs - Максимальное количество эпохМаксимальное количество эпох, используемых для обучения, указанное как положительное целое число.
Итерация - это один шаг в алгоритме градиентного спуска к минимизации функции потерь с использованием мини-партии. Эпоха - это полный проход обучающего алгоритма по всему обучающему набору.
MiniBatchSize - Размер мини-партииРазмер мини-пакета, используемого для каждой итерации обучения, указанный как положительное целое число. Мини-пакет - это подмножество обучающего набора, которое используется для оценки градиента функции потерь и обновления весов.
Shuffle - Возможность перетасовки данных'once' | 'never' | 'every-epoch'Параметр для перетасовки данных, указанный как одно из следующих значений:
'once' - Перетасовка данных обучения и валидации один раз перед обучением.
'never' - Не перетасовывать данные.
'every-epoch' - Перетасовка данных обучения перед каждой эпохой обучения и перетасовка данных проверки перед каждой проверкой сети. Если размер мини-партии не разделяет равномерно количество обучающих образцов, то trainNetwork отбрасывает обучающие данные, которые не укладываются в окончательную полную мини-партию каждой эпохи. Установите Shuffle значение для 'every-epoch' чтобы избежать отбрасывания одних и тех же данных каждую эпоху.
ValidationData - Данные для проверки во время обученияДанные для проверки во время обучения, указанные как хранилище данных, таблица или массив ячеек, содержащий предикторы проверки и ответы.
Можно указать предикторы проверки и ответы, используя те же форматы, которые поддерживаются trainNetwork функция. Можно указать данные проверки как хранилище данных, таблицу или массив ячеек. {predictors,responses}, где predictors содержит предикторы проверки и responses содержит ответы проверки.
Дополнительные сведения см. в разделе images, sequences, и features входные аргументы trainNetwork функция.
Во время обучения, trainNetwork вычисляет точность проверки и потери проверки на данных проверки. Чтобы указать частоту проверки, используйте 'ValidationFrequency' аргумент пары имя-значение. Можно также использовать данные проверки для автоматического прекращения обучения, когда потеря проверки перестает уменьшаться. Чтобы включить автоматическую остановку проверки, используйте 'ValidationPatience' аргумент пары имя-значение.
Если ваша сеть имеет уровни, которые ведут себя иначе во время прогнозирования, чем во время обучения (например, уровни отсева), то точность проверки может быть выше, чем точность обучения (мини-пакет).
Данные проверки тасуются в соответствии с 'Shuffle' значение. Если 'Shuffle' значение равно 'every-epoch'затем данные проверки тасуются перед каждой сетевой проверкой.
ValidationFrequency - Периодичность проверки сетиЧастота проверки сети в количестве итераций, заданная как положительное целое число.
ValidationFrequency значение - количество итераций между оценками метрик проверки.
ValidationPatience - Терпение остановки валидацииInfТерпение остановки проверки обучения сети, указанное как положительное целое число или Inf.
'ValidationPatience' значение - это количество раз, когда потери в наборе проверки могут быть больше или равны ранее наименьшим потерям перед остановкой обучения сети.
InitialLearnRate - Коэффициент начального обученияНачальная скорость обучения, используемая для обучения, заданная как положительный скаляр. Если уровень обучения слишком низкий, то обучение занимает много времени. Если уровень обучения слишком высок, то обучение может достичь неоптимального результата.
LearnRateScheduleSettings - Настройки для графика обученияПараметры графика обучения, определенные как структура. LearnRateScheduleSettings имеет поле Method, который определяет тип метода для корректировки скорости обучения. Возможные методы:
'none' - Уровень обучения постоянен на протяжении всего обучения.
'piecewise' - Уровень обучения периодически падает во время обучения.
Если Method является 'piecewise', то LearnRateScheduleSettings содержит еще два поля:
DropRateFactor - мультипликативный коэффициент, на который снижается уровень обучения во время обучения;
DropPeriod - Количество периодов между корректировками уровня обучения во время обучения
Укажите параметры для графика обучения с помощью trainingOptions.
Типы данных: struct
L2Regularization - Коэффициент для регуляризатора L2Коэффициент для регуляризатора L2 (распад веса), определяемый как неотрицательный скаляр.
Можно указать множитель для регуляризатора L2 для сетевых уровней с обучаемыми параметрами.
SquaredGradientDecayFactor - Скорость спада квадрата градиента скользящего среднегоСкорость затухания квадрата градиентного скользящего среднего, заданного как скаляр от 0 до 1. Дополнительные сведения о различных решателях см. в разделе Стохастический градиентный спуск.
Epsilon - Смещение знаменателяСмещение знаменателя, указанное как положительный скаляр. Решатель добавляет смещение к знаменателю в обновлениях параметров сети, чтобы избежать деления на ноль.
ResetInputNormalization - Возможность сброса нормализации входного уровняtrue (по умолчанию) | falseОпция сброса нормализации входного уровня, заданная как одно из следующих значений:
true - Сбросьте статистику нормализации входного уровня и пересчитайте ее во время обучения.
false - Расчет статистики нормализации во время обучения, когда она пуста.
BatchNormalizationStatistics - Режим для оценки статистики в слоях пакетной нормализации'population' (по умолчанию) | 'moving'Режим для оценки статистики в слоях пакетной нормализации, указанный как один из следующих:
'population' - Использовать демографическую статистику. После обучения программное обеспечение завершает статистику путем повторного прохождения данных обучения и использует полученное среднее значение и дисперсию.
'moving' - аппроксимировать статистику во время обучения, используя текущую оценку, заданную шагами обновления;
где * и * обозначают обновленное среднее значение и дисперсию, соответственноλ (и) λ (2) обозначают среднее значение и значения спада дисперсии, соответственноλ (и 2) обозначают среднее значение и дисперсию входного слоя, соответственно, и λ (и 2) обозначают последние значения скользящего среднего значения и значения дисперсии, соответственно. После обучения программное обеспечение использует самое последнее значение статистики скользящего среднего и дисперсии. Этот параметр поддерживает только обучение ЦП и одного графического процессора.
GradientThreshold - Порог градиентаInfПоложительный порог для градиента, заданный как положительный скаляр или Inf. Когда градиент превышает значение GradientThreshold, то градиент подрезан в соответствии с GradientThresholdMethod.
GradientThresholdMethod - Метод градиентного порога'l2norm' | 'global-l2norm' | 'absolutevalue'Метод градиентного порога, используемый для отсечения значений градиента, превышающих порог градиента, указанный как одно из следующих значений:
'l2norm' - Если L2 норма градиента обучаемого параметра больше GradientThreshold, затем масштабировать градиент так, чтобы L2 норма равнялась GradientThreshold.
'global-l2norm' - Если глобальная норма L2 L больше GradientThreshold, затем масштабировать все градиенты на коэффициент GradientThreshold/L. Глобальная L2 норма учитывает все обучаемые параметры.
'absolute-value' - если абсолютное значение отдельной частной производной в градиенте обучаемого параметра больше, чем GradientThreshold, то масштабировать частную производную, чтобы она имела величину, равную GradientThreshold и сохраняют знак частной производной.
Дополнительные сведения см. в разделе Отсечение градиента.
SequenceLength - Возможность укладки или усечения последовательностей'longest' | 'shortest' | положительное целое числоОпция для вставки, усечения или разделения входных последовательностей, заданная как одна из следующих:
'longest' - Последовательности прокладок в каждой мини-партии должны иметь ту же длину, что и самая длинная последовательность. Этот параметр не отбрасывает данные, хотя заполнение может вызвать шум в сети.
'shortest' - Усечение последовательностей в каждой мини-партии до такой же длины, что и самая короткая последовательность. Этот параметр обеспечивает отсутствие добавления дополнений за счет отбрасывания данных.
Положительное целое число - для каждой мини-партии поместите последовательности в ближайшую кратную указанную длину, которая больше, чем самая длинная длина последовательности в мини-партии, а затем разбейте последовательности на меньшие последовательности указанной длины. Если происходит разделение, программа создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не помещаются в память. Либо попробуйте уменьшить количество последовательностей на мини-пакет, установив 'MiniBatchSize' для более низкого значения.
Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.
SequencePaddingDirection - Направление заполнения или усечения'right' (по умолчанию) | 'left'Направление заполнения или усечения, указанное как одно из следующих:
'right' - Последовательность подушек или усечений справа. Последовательности начинаются на одном и том же этапе, и программное обеспечение усекает или добавляет дополнение к концу последовательностей.
'left' - Последовательность подушек или усечений слева. Программное обеспечение усекает или добавляет дополнение к началу последовательностей, так что последовательности заканчиваются на одном и том же шаге времени.
Поскольку уровни LSTM обрабатывают данные последовательности один раз за раз, когда уровень OutputMode свойство - 'last'любое заполнение на последних временных этапах может отрицательно влиять на выход слоя. Для размещения или усечения данных последовательности слева установите 'SequencePaddingDirection' опция для 'left'.
Для сетей «последовательность-последовательность» (когда OutputMode свойство - 'sequence' для каждого уровня LSTM), любое заполнение в первых временных шагах может негативно влиять на прогнозы для более ранних временных шагов. Для добавления или усечения данных последовательности справа установите 'SequencePaddingDirection' опция для 'right'.
Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.
SequencePaddingValue - Значение для последовательностей площадокЗначение, с помощью которого подаются входные последовательности, заданные как скаляр. Параметр допустим только в том случае, если SequenceLength является 'longest' или положительное целое число. Не устанавливать последовательности с NaN, поскольку это может распространять ошибки по всей сети.
ExecutionEnvironment - Аппаратные ресурсы для сети обучения'auto' | 'cpu' | 'gpu' | 'multi-gpu' | 'parallel'Аппаратный ресурс для обучающей сети, указанный как один из следующих:
'auto' - Используйте графический процессор, если он доступен. В противном случае используйте ЦП.
'cpu' - Использовать ЦП.
'gpu' - Использовать графический процессор.
'multi-gpu' - Использование нескольких графических процессоров на одном компьютере с использованием локального параллельного пула на основе профиля кластера по умолчанию. Если текущий параллельный пул отсутствует, программа запускает параллельный пул с размером пула, равным количеству доступных графических процессоров.
'parallel' - Использовать локальный или удаленный параллельный пул на основе профиля кластера по умолчанию. Если текущий параллельный пул отсутствует, программа запускает его с использованием профиля кластера по умолчанию. Если пул имеет доступ к графическим процессорам, то только работники с уникальным графическим процессором выполняют вычисления обучения. Если в пуле нет графических процессоров, обучение проводится на всех доступных рабочих ЦП.
Дополнительные сведения о том, когда использовать различные среды выполнения, см. в разделе Масштабирование глубокого обучения параллельно и в облаке.
'gpu', 'multi-gpu', и 'parallel' параметры требуют Toolbox™ параллельных вычислений. Чтобы использовать графический процессор для глубокого обучения, необходимо также иметь поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если выбрана одна из этих опций, и панель параллельных вычислений или подходящий графический процессор недоступны, программа возвращает ошибку.
Чтобы увидеть улучшение производительности при параллельном обучении, попробуйте увеличить MiniBatchSize и InitialLearnRate варианты обучения по количеству графических процессоров.
Обучающие сети долговременной памяти поддерживают только один процессор или один графический процессор.
Укажите среду выполнения с помощью trainingOptions.
Типы данных: char | string
WorkerLoad - Параллельное разделение рабочей нагрузкиРазделение рабочей нагрузки для графических процессоров или процессоров, указанное как скаляр от 0 до 1, положительное целое число или числовой вектор. Это свойство действует только в том случае, если ExecutionEnvironment значение равно 'multi-gpu' или 'parallel'.
CheckpointPath - Путь для сохранения сетей контрольных точекПуть, по которому сохраняются сети контрольных точек, указанный как символьный вектор.
Типы данных: char
OutputFcn - Функции выводаФункции вывода для вызова во время обучения, заданные как дескриптор функции или массив ячеек дескрипторов функции. trainNetwork вызывает указанные функции один раз до начала обучения, после каждой итерации и один раз после окончания обучения. trainNetwork передает структуру, содержащую информацию в следующих полях:
| Область | Описание |
|---|---|
Epoch | Текущее число эпох |
Iteration | Номер текущей итерации |
TimeSinceStart | Время в секундах с начала тренировки |
TrainingLoss | Текущая потеря мини-партии |
ValidationLoss | Потеря данных проверки |
BaseLearnRate | Текущая базовая скорость обучения |
TrainingAccuracy | Точность текущей мини-партии (классификационные сети) |
TrainingRMSE | RMSE в текущем мини-пакете (регрессионные сети) |
ValidationAccuracy | Точность данных проверки (классификационные сети) |
ValidationRMSE | RMSE на данных проверки (регрессионные сети) |
State | Текущее состояние обучения с возможным значением "start", "iteration", или "done". |
Если поле не вычисляется или не релевантно для определенного вызова функций вывода, то это поле содержит пустой массив.
Функции вывода можно использовать для просмотра или печати информации о ходе выполнения или для прекращения обучения. Чтобы остановить обучение раньше, вернитесь к функции вывода true. Если возвращается какая-либо выходная функция true, затем обучение заканчивает и trainNetwork возвращает последнюю сеть. Пример использования функций вывода см. в разделе Настройка вывода во время обучения сети глубокого обучения.
Типы данных: function_handle | cell
Создайте набор опций для обучения нейронной сети с помощью оптимизатора RMSProp. Установите максимальное количество периодов для обучения равным 20 и используйте мини-пакет с 64 наблюдениями на каждой итерации. Укажите скорость обучения и скорость затухания скользящего среднего квадратичного градиента. Включите график хода обучения.
options = trainingOptions('rmsprop', ... 'InitialLearnRate',3e-4, ... 'SquaredGradientDecayFactor',0.99, ... 'MaxEpochs',20, ... 'MiniBatchSize',64, ... 'Plots','training-progress')
options =
TrainingOptionsRMSProp with properties:
SquaredGradientDecayFactor: 0.9900
Epsilon: 1.0000e-08
InitialLearnRate: 3.0000e-04
LearnRateSchedule: 'none'
LearnRateDropFactor: 0.1000
LearnRateDropPeriod: 10
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
BatchNormalizationStatistics: 'population'
trainingOptions | trainNetwork
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.