Опции обучения для стохастического спуска градиента с импульсом
Опции обучения для стохастического спуска градиента с импульсом, включая информацию о темпе обучения, фактор регуляризации L2 и мини-пакетный размер.
Создайте объект TrainingOptionsSGDM
с помощью trainingOptions
и задав 'sgdm'
как solverName
.
Plots
— Графики отобразиться во время сетевого обучения'none'
| 'training-progress'
Графики отобразиться во время сетевого обучения, заданного как одно из следующего:
'none'
Не отображайте графики во время обучения.
'training-progress'
— Постройте учебный прогресс. График показывает мини-пакетную потерю и точность, потерю валидации и точность и дополнительную информацию об учебном прогрессе. График имеет кнопку остановки в верхнем правом углу. Нажмите кнопку, чтобы остановить обучение и возвратить текущее состояние сети.
Verbose
— Индикатор, чтобы отобразить учебную информацию о прогрессеИндикатор, чтобы отобразить учебную информацию о прогрессе в командном окне, заданном как 1
(true
) или 0
(false
).
Отображенная информация включает номер эпохи, номер итерации, время протекло, мини-пакетная потеря, мини-пакетная точность и основной темп обучения. Когда вы обучаете сеть регрессии, среднеквадратичную ошибку (RMSE) показывают вместо точности. Если вы подтверждаете сеть во время обучения, то отображенная информация также включает потерю валидации и точность валидации (или RMSE).
Типы данных: логический
VerboseFrequency
— Частота многословной печатиЧастота многословной печати, которая является количеством итераций между печатью к командному окну, заданному как положительное целое число. Это свойство только имеет эффект, когда значение Verbose
равняется true
.
Если вы подтверждаете сеть во время обучения, то печать trainNetwork
к командному окну каждый раз валидация происходит.
MaxEpochs
— Максимальное количество эпохМаксимальное количество эпох, чтобы использовать для обучения, заданного как положительное целое число.
Итерация является одним шагом, сделанным в алгоритме спуска градиента к минимизации функции потерь с помощью мини-пакета. Эпоха является всей передачей учебного алгоритма по целому набору обучающих данных.
MiniBatchSize
— Размер мини-пакетаРазмер мини-пакета, чтобы использовать для каждой учебной итерации, заданной как положительное целое число. Мини-пакет является подмножеством набора обучающих данных, который используется, чтобы оценить градиент функции потерь и обновить веса.
Перестановка
Опция для перестановки данных'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 |
Для последовательности и данных временных рядов, задайте данные о валидации как одно из следующего:
Входной параметр | Описание | Больше информации | |
---|---|---|---|
Массив ячеек {C,Y} | C | Массив ячеек последовательностей или данных временных рядов. | Аргумент C 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 параметры.
Абсолютное значение
Если абсолютное значение отдельной частной производной в градиенте learnable параметра больше, чем GradientThreshold
, то масштабируйте частную производную, чтобы иметь значение, равное GradientThreshold
и сохранить знак частной производной.
Для получения дополнительной информации смотрите, что Градиент Отсекает.
SequenceLength
— Опция, чтобы заполнить или обрезать последовательности'longest'
| 'shortest'
| положительное целое числоОпция, чтобы заполнить, обрежьте или разделите входные последовательности, заданные как одно из следующего:
'longest'
— Заполните последовательности в каждом мини-пакете, чтобы иметь ту же длину как самая длинная последовательность. Эта опция не отбрасывает данных, хотя дополнение может ввести шум сети.
'shortest'
— Усеченные последовательности в каждом мини-пакете, чтобы иметь ту же длину как самая короткая последовательность. Эта опция гарантирует, что никакое дополнение не добавляется, за счет отбрасывания данных.
Положительное целое число — Для каждого мини-пакета, заполните последовательности к самому близкому кратному заданная длина, которая больше, чем самая долгая длина последовательности в мини-пакете, и затем разделяет последовательности в меньшие последовательности заданной длины. Если разделение происходит, то программное обеспечение создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не умещаются в памяти. Также попытайтесь сократить количество последовательностей на мини-пакет путем установки опции 'MiniBatchSize'
на нижнее значение.
Если вы задаете длину последовательности как положительное целое число, то программные процессы меньшие последовательности в последовательных итерациях. Сеть обновляет сетевое состояние между последовательностями разделения.
Программное обеспечение заполняет и обрезает последовательности справа. Чтобы узнать больше об эффекте дополнения, усечение и разделение входных последовательностей, видят, что Последовательность Дополняет, Усечение, и Разделяет.
SequencePaddingValue
— Значение, чтобы заполнить последовательностиЗначение, которым можно заполнить входные последовательности, заданные как скаляр. Опция допустима только, когда SequenceLength
является 'longest'
или положительное целое число. Не заполняйте последовательности NaN
, потому что выполнение так может распространить ошибки в сети.
Среда выполнения
Аппаратный ресурс для того, чтобы обучить сеть'auto'
| 'cpu'
| 'gpu'
| 'multi-gpu'
| 'parallel'
Аппаратный ресурс для того, чтобы обучить сеть, заданный как одно из следующего:
'auto'
Используйте графический процессор, если вы доступны. В противном случае используйте центральный процессор.
'cpu'
— Используйте центральный процессор.
'gpu'
— Используйте графический процессор.
'multi-gpu'
— Используйте несколько графических процессоров на одной машине, с помощью локального параллельного пула. Если никакой пул не открыт, то программное обеспечение открывается один на основе ваших параллельных настроек по умолчанию.
'parallel'
— Используйте локальный параллельный пул или вычислите кластер. Если никакой пул не открыт, то программное обеспечение открывает тот с помощью кластерного профиля по умолчанию. Если пул имеет доступ к графическим процессорам, то только рабочие с уникальным графическим процессором выполняют учебное вычисление. Если пул не имеет графических процессоров, то обучение происходит на всех кластерных центральных процессорах.
Для получения дополнительной информации о том, когда использовать различные среды выполнения, смотрите, Увеличивают Глубокое обучение параллельно и в Облаке.
Графический процессор, мультиграфический процессор и параллельные опции требуют Параллельных вычислений, Toolbox™.To используют графический процессор для глубокого обучения, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Если вы выбираете одну из этих опций и Parallel Computing Toolbox, или подходящий графический процессор не доступен, то программное обеспечение возвращает ошибку.
Чтобы видеть улучшение производительности когда обучение параллельно, попытайтесь увеличить опцию обучения MiniBatchSize
, чтобы сместить коммуникацию наверху.
Учебные длинные краткосрочные сети памяти поддерживают одно обучение центрального процессора и графического процессора только.
Задайте среду выполнения с помощью trainingOptions
.
Типы данных: char
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 DispatchInBackground: 0
trainNetwork
| trainingOptions
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.