Опции обучения для оптимизатора 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
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.