Опции обучения для стохастического градиентного спуска с импульсом
Опции обучения для стохастического градиентного спуска с импульсом, включая информацию о темпе обучения, фактор регуляризации L2 и мини-пакетный размер.
Создайте TrainingOptionsSGDM
объект с помощью trainingOptions
и определение 'sgdm'
как solverName
входной параметр.
Plots
— Графики отобразиться во время сетевого обучения'none'
| 'training-progress'
Графики отобразиться во время сетевого обучения, заданного как одно из следующего:
'none'
— Не отображайте графики во время обучения.
'training-progress'
— Постройте процесс обучения. График показывает мини-пакетную потерю и точность, потерю валидации и точность и дополнительную информацию о процессе обучения. График имеет кнопку остановки в верхнем правом углу. Нажмите кнопку, чтобы остановить обучение и возвратить текущее состояние сети.
Verbose
— Индикатор, чтобы отобразить информацию о процессе обучения
| 0
Индикатор, чтобы отобразить информацию о процессе обучения в командном окне, заданном как 1
TRUE
) или 0
ложь
).
Отображенная информация включает номер эпохи, номер итерации, время протекло, мини-пакетная потеря, мини-пакетная точность и основной темп обучения. Когда вы обучаете сеть регрессии, среднеквадратичную ошибку (RMSE) показывают вместо точности. Если вы подтверждаете сеть во время обучения, то отображенная информация также включает потерю валидации и точность валидации (или RMSE).
Типы данных: логический
VerboseFrequency
— Частота многословной печатиЧастота многословной печати, которая является количеством итераций между печатью к командному окну, заданному как положительное целое число. Это свойство только оказывает влияние когда Verbose
значение равняется true
.
Если вы подтверждаете сеть во время обучения, то trainNetwork
печать к командному окну каждый раз валидация происходит.
MaxEpochs
— Максимальное количество эпохМаксимальное количество эпох, чтобы использовать в обучении, заданном как положительное целое число.
Итерация является одним шагом, сделанным в алгоритме градиентного спуска к минимизации функции потерь с помощью мини-пакета. Эпоха является всей передачей учебного алгоритма по целому набору обучающих данных.
MiniBatchSize
— Размер мини-пакетаРазмер мини-пакета, чтобы использовать в каждой учебной итерации, заданной как положительное целое число. Мини-пакет является подмножеством набора обучающих данных, который используется, чтобы оценить градиент функции потерь и обновить веса.
Shuffle
— Опция для перестановки данных'once'
| 'never'
| 'every-epoch'
Опция для перестановки данных, заданная как одно из следующего:
'once'
— Переставьте данные об обучении и валидации однажды обучение.
'never'
— Не переставляйте данные.
'every-epoch'
— Переставьте обучающие данные перед каждой учебной эпохой и переставьте данные о валидации перед каждой сетевой валидацией. Если мини-пакетный размер равномерно не делит количество учебных выборок, то trainNetwork
отбрасывает обучающие данные, который не помещается в итоговый полный мини-пакет каждой эпохи. Установите Shuffle
значение к 'every-epoch'
постараться не отбрасывать те же данные каждая эпоха.
ValidationData
— Данные, чтобы использовать в валидации во время обученияДанные, чтобы использовать в валидации во время обучения, заданного как datastore изображений, datastore, который возвращает данные в ячейке таблицы 2D столбца или массиве 2D ячейки столбца, таблице или массиве ячеек. Формат данных о валидации зависит от типа задачи, и соответствуйте допустимым входным параметрам к trainNetwork
функция.
Эта опция поддерживает сети с одним входом только.
Для данных изображения задайте данные о валидации как одно из следующего:
Входной параметр | Описание | Больше информации | |
---|---|---|---|
ImageDatastore |
| imds аргумент trainNetwork | |
Datastore | Datastore, который возвращает данные в ячейке таблицы 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
— Частота сетевой валидацииЧастота сетевой валидации в количестве итераций, заданных как положительное целое число.
ValidationFrequency
значение является количеством итераций между оценками метрик валидации.
ValidationPatience
— Терпение остановки валидацииInf
Терпение остановки валидации сетевого обучения, заданного как положительное целое число или Inf
.
'ValidationPatience'
значение является числом раз, что потеря на наборе валидации может быть больше, чем или равняться ранее самой маленькой потере, прежде чем сетевое обучение остановится.
InitialLearnRate
— Начальный темп обученияНачальный темп обучения используется в обучении, заданном как положительная скалярная величина. Если темп обучения является слишком низким, то обучение занимает много времени. Если темп обучения слишком высок, то обучение может достигнуть субоптимального результата.
LearnRateScheduleSettings
— Настройки для расписания темпа обученияНастройки для расписания темпа обучения, заданного как структура. LearnRateScheduleSettings
имеет поле Method
, который задает тип метода для корректировки темпа обучения. Возможные методы:
'none'
— Темп обучения является постоянным в течение обучения.
'piecewise'
— Темп обучения понижается периодически во время обучения.
Если Method
'piecewise'
, затем LearnRateScheduleSettings
содержит еще два поля:
DropRateFactor
— Мультипликативный фактор, которым темп обучения понижается во время обучения
DropPeriod
— Номер эпох, который передает между корректировками темпа обучения во время обучения
Задайте настройки для уровня расписания изучения с помощью trainingOptions
.
Типы данных: struct
L2Regularization
— Фактор для L2 regularizerФактор для L2 regularizer (затухание веса), заданный как неотрицательный скаляр.
Можно задать множитель для L2 regularizer для сетевых слоев learnable параметрами.
Momentum
— Вклад предыдущего шага градиентаВклад градиента продвигается от предыдущей итерации до текущей итерации обучения, заданного как скалярное значение от 0 до 1. Значение 0 средних значений никакой вклад от предыдущего шага, тогда как значение 1 среднего значения максимальный вклад от предыдущего шага. Для получения дополнительной информации о других решателях, смотрите Стохастический Градиентный спуск.
GradientThreshold
— Порог градиентаInf
Положительный порог для градиента, заданного как положительная скалярная величина или Inf
. Когда градиент превышает значение GradientThreshold
, затем градиент отсекается согласно GradientThresholdMethod
.
GradientThresholdMethod
— Пороговый метод градиента'l2norm'
| 'global-l2norm'
| 'absolutevalue'
Пороговый метод градиента раньше отсекал значения градиента, которые превышают порог градиента, заданный как одно из следующего:
'l2norm'
— Если норма L2 градиента learnable параметра больше, чем GradientThreshold
, затем масштабируйте градиент так, чтобы норма L2 равнялась GradientThreshold
.
'global-l2norm'
— Если глобальная норма L2, L, больше, чем GradientThreshold
, затем масштабируйте все градиенты фактором GradientThreshold/
L. Глобальная норма L2 рассматривает все learnable параметры.
'absolute-value'
— Если абсолютное значение отдельной частной производной в градиенте learnable параметра больше, чем GradientThreshold
, затем масштабируйте частную производную, чтобы иметь величину, равную GradientThreshold
и сохраните знак частной производной.
Для получения дополнительной информации смотрите, что Градиент Отсекает.
ResetInputNormalization
— Опция, чтобы сбросить входную нормализацию слояtrue
(значение по умолчанию) | false
Опция, чтобы сбросить входную нормализацию слоя, заданную как одно из следующего:
true
– Сбросьте входную статистику нормализации слоя и повторно вычислите их в учебное время.
false
– Вычислите статистику нормализации в учебное время, когда они будут пусты.
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'
— Используйте локальный или удаленный параллельный пул на основе своего кластерного профиля по умолчанию. Если нет никакого текущего параллельного пула, программное обеспечение запускает тот с помощью кластерного профиля по умолчанию. Если пул имеет доступ к графическим процессорам, то только рабочие с помощью уникального графического процессора выполняют учебный расчет. Если пул не имеет графических процессоров, то обучение происходит на всех доступных рабочих центрального процессора вместо этого.
Для получения дополнительной информации о том, когда использовать различные среды выполнения, смотрите, Увеличивают Глубокое обучение в параллели и в облаке.
Графический процессор, мультиграфический процессор и параллельные опции требуют Parallel Computing Toolbox™. Чтобы использовать графический процессор в глубоком обучении, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Если вы выбираете одну из этих опций и 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
Создайте набор опций для обучения сеть с помощью стохастического градиентного спуска с импульсом. Уменьшайте темп обучения фактором 0,2 каждых 5 эпох. Определите максимальный номер эпох для обучения к 20 и используйте мини-пакет с 64 наблюдениями в каждой итерации. Включите график процесса обучения.
options = trainingOptions('sgdm', ... 'LearnRateSchedule','piecewise', ... 'LearnRateDropFactor',0.2, ... 'LearnRateDropPeriod',5, ... 'MaxEpochs',20, ... 'MiniBatchSize',64, ... 'Plots','training-progress')
options = TrainingOptionsSGDM with properties: Momentum: 0.9000 InitialLearnRate: 0.0100 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
trainNetwork
| trainingOptions
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.