Опции обучения для оптимизатора RMSProp
Опции обучения для RMSProp (среднеквадратичное распространение) оптимизатор, включая информацию о скорости обучения, фактор регуляризации L2 и мини-пакетный размер.
Создайте TrainingOptionsRMSProp объектное использование trainingOptions и определение 'rmsprop' как solverName входной параметр.
Plots — Графики отобразиться во время сетевого обучения'none' | 'training-progress'Графики отобразиться во время сетевого обучения в виде одного из следующего:
'none' — Не отображайте графики во время обучения.
'training-progress' — Постройте процесс обучения. График показывает мини-пакетную потерю и точность, потерю валидации и точность и дополнительную информацию о процессе обучения. График имеет кнопку остановки
в верхнем правом углу. Нажмите кнопку, чтобы остановить обучение и возвратить текущее состояние сети.
Verbose — Индикатор, чтобы отобразить информацию о процессе обучения (TRUE) (значение по умолчанию) | 0 ложьИндикатор, чтобы отобразить информацию о процессе обучения в командном окне в виде 1 (TRUE) или 0 ложь.
Многословный выход отображает следующую информацию:
Сети классификации
| Поле | Описание |
|---|---|
Epoch | Номер эпохи. Эпоха соответствует всей передаче данных. |
Iteration | Номер итерации. Итерация соответствует мини-пакету. |
Time Elapsed | Время протекло в часах, минутах и секундах. |
Mini-batch Accuracy | Точность классификации на мини-пакете. |
Validation Accuracy | Точность классификации на данных о валидации. Если вы не задаете данные о валидации, то функция не отображает это поле. |
Mini-batch Loss | Потеря на мини-пакете. Если выходным слоем является ClassificationOutputLayer объект, затем потеря является потерей перекрестной энтропии для многоклассовых задач классификации со взаимоисключающими классами. |
Validation Loss | Потеря на данных о валидации. Если выходным слоем является ClassificationOutputLayer объект, затем потеря является потерей перекрестной энтропии для многоклассовых задач классификации со взаимоисключающими классами. Если вы не задаете данные о валидации, то функция не отображает это поле. |
Base Learning Rate | Основная скорость обучения. Программа умножает коэффициенты скорости обучения слоев на это значение. |
Сети регрессии
| Поле | Описание |
|---|---|
Epoch | Номер эпохи. Эпоха соответствует всей передаче данных. |
Iteration | Номер итерации. Итерация соответствует мини-пакету. |
Time Elapsed | Время протекло в часах, минутах и секундах. |
Mini-batch RMSE | Среднеквадратическая ошибка (RMSE) на мини-пакете. |
Validation RMSE | RMSE на данных о валидации. Если вы не задаете данные о валидации, то программное обеспечение не отображает это поле. |
Mini-batch Loss | Потеря на мини-пакете. Если выходным слоем является RegressionOutputLayer объект, затем потеря является половиной среднеквадратической ошибки. |
Validation Loss | Потеря на данных о валидации. Если выходным слоем является RegressionOutputLayer объект, затем потеря является половиной среднеквадратической ошибки. Если вы не задаете данные о валидации, то программное обеспечение не отображает это поле. |
Base Learning Rate | Основная скорость обучения. Программа умножает коэффициенты скорости обучения слоев на это значение. |
Когда обучение останавливается, многословный выход отображает причину остановки.
Чтобы задать данные о валидации, используйте ValidationData опция обучения.
Типы данных: логический
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 — Частота сетевой валидацииЧастота сетевой валидации в количестве итераций в виде положительного целого числа.
ValidationFrequency значение является количеством итераций между оценками метрик валидации.
ValidationPatience — Терпение остановки валидацииInf (значение по умолчанию) | положительное целое числоТерпение остановки валидации сетевого обучения в виде положительного целого числа или Inf.
ValidationPatience задает число раз, что потеря на наборе валидации может быть больше, чем или равняться ранее самой маленькой потере, прежде чем сетевое обучение остановится. Если ValidationPatience isinf, затем значения потери валидации не вызывают обучение остановиться рано.
Возвращенная сеть зависит от OutputNetwork опция обучения. Чтобы возвратить сеть с самой низкой потерей валидации, установите OutputNetwork опция обучения к "best-validation-loss".
OutputNetwork — Сеть, чтобы возвратиться, когда обучение завершается'last-iteration' (значение по умолчанию) | 'best-validation-loss'Сеть, чтобы возвратиться, когда обучение завершается в виде одного из следующего:
'last-iteration' – Возвратите сеть, соответствующую последней учебной итерации.
'best-validation-loss' – Возвратите сеть, соответствующую учебной итерации с самой низкой потерей валидации. Чтобы использовать эту опцию, необходимо задать 'ValidationData'.
InitialLearnRate — Начальная скорость обученияНачальная скорость обучения используется для обучения в виде положительной скалярной величины. Если скорость обучения является слишком низкой, то обучение занимает много времени. Если скорость обучения слишком высока, то обучение может достигнуть субоптимального результата.
LearnRateScheduleSettings — Настройки для расписания скорости обученияНастройки для скорости обучения планируют в виде структуры. LearnRateScheduleSettings имеет поле Method, который задает тип метода для корректировки скорости обучения. Возможные методы:
'none' — Скорость обучения является постоянной в течение обучения.
'piecewise' — Скорость обучения понижается периодически во время обучения.
Если Method 'piecewise', затем LearnRateScheduleSettings содержит еще два поля:
DropRateFactor — Мультипликативный фактор, которым скорость обучения понижается во время обучения
DropPeriod — Номер эпох, который передает между корректировками скорости обучения во время обучения
Задайте настройки для использования уровня расписания изучения trainingOptions.
Типы данных: struct
L2Regularization — Фактор для L2 regularizerФактор для L2 regularizer (затухание веса) в виде неотрицательного скаляра.
Можно задать множитель для L2 regularizer для слоев сети с настраиваемыми параметрами.
SquaredGradientDecayFactor — Уровень затухания скользящего среднего значения градиента в квадратеУровень затухания скользящего среднего значения градиента в квадрате в виде скаляра от 0 до 1. Для получения дополнительной информации о других решателях, смотрите Стохастический Градиентный спуск.
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' опция к нижнему значению.
Чтобы узнать больше об эффекте дополнения, усечение и разделение входных последовательностей, видят, что Последовательность Дополняет, Усечение, и Разделяет.
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' опции требуют Parallel Computing Toolbox™. Чтобы использовать графический процессор для глубокого обучения, у вас должно также быть поддерживаемое устройство графического процессора. Для получения информации о поддерживаемых устройствах смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox). Если вы выбираете одну из этих опций и Parallel Computing Toolbox, или подходящий графический процессор не доступен, то программное обеспечение возвращает ошибку.
Чтобы видеть улучшение эффективности когда обучение параллельно, попытайтесь увеличить MiniBatchSize и InitialLearnRate опции обучения количеством графических процессоров.
Учебные длинные краткосрочные сети памяти поддерживают один центральный процессор или одно обучение графического процессора только.
Задайте использование среды выполнения trainingOptions.
Типы данных: char | string
WorkerLoad — Найдите что-либо подобное делению загрузки рабочегоДеление загрузки рабочего для графических процессоров или центральных процессоров в виде скаляра от 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'
OutputNetwork: 'last-iteration'
trainNetwork | trainingOptions
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.