Опции обучения для оптимизатора 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
- Данные для валидации во время обученияДанные для проверки во время обучения, заданные как datastore, таблица или массив ячеек, содержащий предикторы и ответы валидации.
Можно задать предикторы и ответы валидации, используя те же форматы, поддерживаемые trainNetwork
функция. Можно задать данные валидации как datastore, таблица или массив ячеек {predictors,responses}
, где predictors
содержит предикторы и responses
валидации содержит ответы на валидацию.
Для получения дополнительной информации смотрите images
, sequences
, и features
входные параметры trainNetwork
функция.
Во время обучения, trainNetwork
вычисляет точность валидации и потери валидации данных валидации. Чтобы задать частоту валидации, используйте 'ValidationFrequency'
аргумент пары "имя-значение". Можно также использовать данные валидации, чтобы автоматически остановить обучение, когда потеря валидации прекращает уменьшаться. Чтобы включить автоматическую остановку валидации, используйте 'ValidationPatience'
аргумент пары "имя-значение".
Если ваша сеть имеет слои, которые ведут себя по-другому во время предсказания, чем во время обучения (для примера, слоев отсева), то точность валидации может быть выше точности обучения (мини-пакета).
Данные валидации тасуются в соответствии с 'Shuffle'
значение. Если на 'Shuffle'
значение равно 'every-epoch'
затем данные валидации перетасовываются перед каждой валидацией сети.
ValidationFrequency
- Частота валидации сетиЧастота валидации сети в количестве итераций, заданная как положительное целое число.
The ValidationFrequency
значение является количеством итераций между оценками метрик валидации.
ValidationPatience
- Терпение остановки валидацииInf
Терпение остановки валидации сетевого обучения, заданное как положительное целое или Inf
.
The 'ValidationPatience'
значение является количеством раз, когда потеря на наборе валидации может быть больше или равной ранее наименьшей потере до остановки сетевого обучения.
InitialLearnRate
- Начальная скорость обученияНачальная скорость обучения, используемая для обучения, задается как положительная скалярная величина. Если скорость обучения слишком низкий, то обучение занимает много времени. Если скорость обучения слишком высок, то обучение может достичь неоптимального результата.
LearnRateScheduleSettings
- Настройки расписания скорости обученияНастройки расписания скорости обучения, заданные как структура. LearnRateScheduleSettings
имеет поле Method
, который задает тип метода для корректировки скорости обучения. Возможными методами являются:
'none'
- Скорость обучения постоянна на протяжении всего обучения.
'piecewise'
- Темп обучения периодически падает во время обучения.
Если Method
является 'piecewise'
, затем LearnRateScheduleSettings
содержит еще два поля:
DropRateFactor
- Мультипликативный коэффициент, на который падает темп обучения во время обучения
DropPeriod
- Количество эпох, которые проходят между корректировками скорости обучения во время обучения
Задайте настройки для скорости обучения по расписанию, используя trainingOptions
.
Типы данных: struct
L2Regularization
- Коэффициент для L2 регулятораКоэффициент для L2 регуляризатора (распад веса), заданный как неотрицательный скаляр.
Можно задать множитель для регулятора L2 для слоев сети с настраиваемыми параметрами.
SquaredGradientDecayFactor
- Скорость распада квадратного градиента скользящего среднего значенияСкорость распада квадратного градиента скользящего среднего значения, заданная как скаляр от 0 до 1. Для получения дополнительной информации о других решателях. Stochastic Gradient Descent.
Epsilon
- Смещение знаменателяСмещение знаменателя, заданное как положительная скалярная величина. Решатель добавляет смещение знаменателю в обновлениях сетевого параметра, чтобы избежать деления на нуль.
ResetInputNormalization
- Опция сброса нормализации входного слояtrue
(по умолчанию) | false
Опция сброса нормализации входного слоя, заданная как одно из следующего:
true
- Сбросьте вход слоя статистики нормализации и пересчитайте их во время обучения.
false
- Вычислите статистику нормализации во время обучения, когда они пусты.
BatchNormalizationStatistics
- Режим оценки статистики в слоях нормализации партии .'population'
(по умолчанию) | 'moving'
Режим для оценки статистики в слоях нормализации партии ., заданный как один из следующих:
'population'
- Используйте статистику населения. После обучения программное обеспечение завершает статистику путем повторной передачи обучающих данных и использует полученное среднее значение и отклонение.
'moving'
- Аппроксимация статистики во время обучения с помощью текущей оценки, заданной шагами обновления
где и обозначить обновленные среднее и отклонение, соответственно, и обозначить среднее и отклонение значения распада, соответственно, и обозначает среднее значение и отклонение входа слоя, соответственно, и и обозначить последние значения скользящего среднего значения и отклонений, соответственно. После обучения программное обеспечение использует самое последнее значение скользящего среднего значения и отклонений. Эта опция поддерживает обучение только для центрального процессора и одного графического процессора.
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'
опция для более низкого значения.
Чтобы узнать больше об эффекте заполнения, усечения и разделения входа последовательностей, смотрите Sequence Padding, Truncation и Splitting.
SequencePaddingDirection
- Направление заполнения или усечения'right'
(по умолчанию) | 'left'
Направление заполнения или усечения, заданное как одно из следующего:
'right'
- Дополните или обрезайте последовательности справа. Последовательности начинаются с того же временного шага, а программное обеспечение обрезает или добавляет заполнение в конец последовательностей.
'left'
- Дополните или обрезайте последовательности слева. Программа обрезает или добавляет заполнение к началу последовательностей, так что последовательности заканчиваются на одном и том же временном шаге.
Потому что слои LSTM обрабатывают данные последовательности по одному временному шагу за раз, когда слой OutputMode
свойство 'last'
любое заполнение на последних временных шагах может отрицательно повлиять на выход слоя. Чтобы дополнить или обрезать данные последовательности слева, установите 'SequencePaddingDirection'
опция для 'left'
.
Для сетей от последовательности к последовательности (когда OutputMode
свойство 'sequence'
для каждого слоя LSTM), любое заполнение в первые временные шаги может негативно повлиять на предсказания для более ранних временных шагов. Чтобы дополнить или обрезать данные последовательности справа, установите 'SequencePaddingDirection'
опция для 'right'
.
Чтобы узнать больше об эффекте заполнения, усечения и разделения входа последовательностей, смотрите Sequence Padding, Truncation и Splitting.
SequencePaddingValue
- Значение для дополнения последовательностейЗначение, которым можно дополнить входные последовательности, заданное как скаляр. Опция действительна только при SequenceLength
является 'longest'
или положительное целое число. Не дополнять последовательности NaN
, потому что это может распространять ошибки по сети.
ExecutionEnvironment
- Аппаратный ресурс для обучения сети'auto'
| 'cpu'
| 'gpu'
| 'multi-gpu'
| 'parallel'
Аппаратный ресурс для обучения сети, указанный как одно из следующего:
'auto'
- Используйте графический процессор, если он доступен. В противном случае используйте центральный процессор.
'cpu'
- Использовать центральный процессор.
'gpu'
- Использовать графический процессор.
'multi-gpu'
- Используйте несколько графических процессоров на одной машине, используя локальный параллельный пул на основе профиля кластера по умолчанию. Если текущий параллельный пул отсутствует, программа запускает параллельный пул с размером пула, равным количеству доступных графических процессоров.
'parallel'
- Используйте локальный или удаленный параллельный пул на основе профиля кластера по умолчанию. Если текущий параллельный пул отсутствует, программа запускает его с помощью профиля кластера по умолчанию. Если пул имеет доступ к графическим процессорам, то только работники с уникальным графическим процессором выполняют расчеты обучения. Если пул не имеет графических процессоров, то обучение выполняется для всех доступных рабочих центральных процессоров.
Дополнительные сведения о том, когда использовать различные окружения выполнения, см. в разделе Шкале глубокого обучения параллельно и в облаке.
'gpu'
, 'multi-gpu'
, и 'parallel'
опции требуют Parallel Computing Toolbox™. Для использования графический процессор для глубокого обучения необходимо иметь также поддерживаемое графический процессор. Для получения информации о поддерживаемых устройствах смотрите Поддержку GPU by Release (Parallel Computing Toolbox). Если вы выбираете одну из этих опций и Parallel Computing Toolbox или подходящий графический процессор недоступен, то программное обеспечение возвращает ошибку.
Чтобы увидеть улучшение эффективности при параллельном обучении, попробуйте масштабировать MiniBatchSize
и InitialLearnRate
опции обучения по количеству графических процессоров.
Обучение сетей долгой краткосрочной памяти поддерживает только один центральный процессор или одно обучение графический процессор.
Задайте окружение выполнения используя trainingOptions
.
Типы данных: char
| string
WorkerLoad
- Параллельное деление рабочей нагрузкиДеление рабочей нагрузки для GPU или CPU, заданное как скаляр от 0 до 1, положительное целое число или числовой вектор. Это свойство имеет эффект только, когда ExecutionEnvironment
значение равно 'multi-gpu'
или 'parallel'
.
CheckpointPath
- Путь для сохранения сетей контрольных точекПуть, в котором сохраняются сети контрольных точек, задается как вектор символов.
Типы данных: char
OutputFcn
- Выходные функцииВыходные функции для вызова во время обучения, заданные как указатель на функцию или cell-массив указателей на функцию. 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.