На этой странице описаны различные опции обучения и методы повышения точности нейронных сетей для глубокого обучения.
Соответствующая сетевая архитектура зависит от задачи и доступных данных. Примите во внимание эти предложения при принятии решения о том, какую архитектуру использовать и использовать ли предварительно обученную сеть или обучать с нуля.
Данные | Описание задачи | Подробнее |
---|---|---|
Изображения | Классификация природных изображений | Попробуйте различные предварительно обученные сети. Список предварительно обученных нейронных сетей для глубокого обучения см. в разделе «Предварительно обученные Глубокие нейронные сети». Чтобы узнать, как интерактивно подготовить сеть к передаче обучения с помощью Deep Network Designer, смотрите Передача Обучения with Deep Network Designer. |
Регрессия природных изображений | Попробуйте различные предварительно обученные сети. Для примера, показывающего преобразование предварительно обученной классификационной сети в регрессионую, смотрите Преобразование Классификационной сети в Регрессионую сеть. | |
Классификация и регрессия неестественных изображений (для примера, крошечных изображений и спектрограмм | Для примера, показывающего, как классифицировать крошечные изображения, смотрите Обучите Остаточную Сеть для Классификации Изображений. Пример, показывающий, как классифицировать спектрограммы, см. Распознание речевых команд с использованием глубокого обучения. | |
Семантическая сегментация | Computer Vision Toolbox™ предоставляет инструменты для создания нейронных сетей для глубокого обучения семантической сегментации. Для получения дополнительной информации смотрите Начало работы с семантической сегментацией с использованием глубокого обучения (Computer Vision Toolbox). | |
Последовательности, временные ряды и сигналы | Классификация от последовательности до метки | Для получения примера смотрите Классификацию последовательностей с использованием глубокого обучения. |
Классификация и регрессия между последовательностями | Чтобы узнать больше, смотрите Классификацию последовательностей в последовательностях с использованием глубокого обучения и регрессию последовательностей в последовательности с использованием глубокого обучения. | |
Прогнозирование временных рядов | Для получения примера смотрите Прогнозирование временных рядов с использованием глубокого обучения. | |
Текст | Классификация и регрессия | Text Analytics Toolbox™ предоставляет инструменты для создания нейронных сетей для глубокого обучения для текстовых данных. Для получения примера смотрите Классификация текстовых данных с помощью глубокого обучения. |
Генерация текста | Для получения примера смотрите Сгенерировать текст Используя Глубокое Обучение. | |
Аудио | Классификация и регрессия звука | Для получения примера см. Распознание речевых команд с использованием глубокого обучения. |
trainingOptions
функция предоставляет различные опции для обучения глубокой нейронной сети для глубокого обучения.
Совет | Дополнительная информация |
---|---|
Отслеживайте процесс обучения | Чтобы включить график процесса обучения, установите 'Plots' опция в trainingOptions на 'training-progress' . |
Используйте данные валидации | Чтобы задать данные валидации, используйте Примечание Если ваш набор данных валидации слишком мал и недостаточно представляет данные, то отчетные метрики могут вам не помочь. Использование слишком большого набора данных валидации может привести к замедлению обучения. |
Для передачи обучения ускорите обучение новых слоев и замедлите обучение в перенесенных слоях | Задайте коэффициенты более высокой скорости обучения для новых слоев, используя, например, Уменьшите начальную скорость обучения, используя При передаче обучения вам не нужно тренироваться на столько эпох. Уменьшите количество эпох, использующих Чтобы узнать, как интерактивно подготовить сеть к передаче обучения с помощью Deep Network Designer, смотрите Передача Обучения with Deep Network Designer. |
Тасуйте свои данные каждую эпоху | Чтобы перетасовать свои данные каждую эпоху (один полный проход данных), установите
Примечание Для данных последовательности тасование может оказать негативное влияние на точность, так как это может увеличить количество заполнения или усеченных данных. Если у вас есть данные последовательности, то сортировка данных по длине последовательности может помочь. Для получения дополнительной информации см. Раздел «Заполнение последовательности», «Усечение» и «Разделение».
|
Попробуйте различные оптимизаторы | Чтобы задать различные оптимизаторы, используйте |
Для получения дополнительной информации смотрите Настройте Параметры и Обучите Сверточную Нейронную Сеть.
Если вы заметили проблемы во время обучения, то рассмотрим эти возможные решения.
Проблема | Возможное решение |
---|---|
NaNs или большие всплески потерь | Уменьшите начальную скорость обучения, используя Если уменьшение скорости обучения не помогает, попробуйте использовать градиентные усечения. Чтобы задать порог градиента, используйте |
Потеря все еще уменьшается в конце обучения | Обучайте дольше, увеличивая количество эпох, используя 'MaxEpochs' опция в trainingOptions . |
Плато потерь | Если плато потерь при неожиданно высоком значении, то сбросьте скорость обучения на плато. Чтобы изменить расписание скорости обучения, используйте Если падение скорости обучения не помогает, то модель может оказаться недостаточно подходящей. Попробуйте увеличить количество параметров или слоев. Можно проверить, является ли модель недостаточной, отслеживая потери при валидации. |
Потеря валидации намного выше, чем потеря обучения | Чтобы предотвратить сверхподбор кривой, попробуйте одно или несколько из следующих:
|
Потеря уменьшается очень медленно | Увеличьте начальную скорость обучения, используя Для данных изображений попробуйте включить нормализацию партии . слоя в сеть. Для получения дополнительной информации смотрите |
Для получения дополнительной информации смотрите Настройте Параметры и Обучите Сверточную Нейронную Сеть.
Если ваша сеть вообще не обучается, то рассмотрим возможные решения.
Ошибка | Описание | Возможное решение |
---|---|---|
Ошибка нехватки памяти при обучении | Доступное оборудование не может хранить текущий мини-пакет, веса сети и вычисленные уровни активации. | Попробуйте уменьшить размер мини-пакета, используя Если уменьшение размера мини-пакета не работает, попробуйте использовать меньшую сеть, уменьшив количество слоев, или уменьшив количество параметров или фильтров в слоях. |
Пользовательские ошибки слоя | Может возникнуть проблема с реализацией пользовательского слоя. | Проверьте валидность пользовательского слоя и найдите потенциальные проблемы с помощью Если тест не пройден, когда вы используете |
Обучение выдает ошибку 'CUDA_ERROR_UNKNOWN' | Иногда графический процессор выдает эту ошибку, когда она используется как для запросов на вычисление, так и для запросов на отображение от ОС. | Попробуйте уменьшить размер мини-пакета, используя Если уменьшение размера мини-пакета не работает, то в Windows®, попробуйте настроить параметры Timeout Detection and Recovery (TDR). Для примера измените |
Вы можете анализировать свои нейронные сети для глубокого обучения, используя analyzeNetwork
. analyzeNetwork
функция отображает интерактивную визуализацию сетевой архитектуры, обнаруживает ошибки и проблемы с сетью и предоставляет подробную информацию о слоях сети. Используйте сетевой анализатор, чтобы визуализировать и понять сетевую архитектуру, проверить, что вы правильно определили архитектуру, и обнаружить проблемы перед обучением. Проблемы, которые analyzeNetwork
обнаружения включают отсутствующие или отсоединенные слои, несоответствующие или неправильные размеры входов слоя, неправильное количество входов слоя и недопустимые графовые структуры.
Вы можете улучшить точность, предварительно обработав свои данные.
В идеале все классы имеют равное количество наблюдений. Однако для некоторых задач классы могут быть несбалансированными. Например, автомобильные наборы данных уличных сцен, как правило, имеют больше пикселей неба, создания и дороги, чем пиксели пешехода и велосипедиста, потому что небо, создания и дороги покрывают больше площади изображений. Если не обработать правильно, этот дисбаланс может нанести ущерб процессу обучения, потому что обучение предвзято в пользу доминирующих классов.
Для задач классификации можно задать веса классов с помощью 'ClassWeights'
опция classificationLayer
. Для семантических задач сегментации можно задать веса классов с помощью ClassWeights
(Computer Vision Toolbox) свойства pixelClassificationLayer
(Computer Vision Toolbox).
Также можно сбалансировать классы, выполнив одно или несколько из следующих действий:
Добавьте новые наблюдения из наименее частых классов.
Удалите наблюдения из наиболее частых классов.
Группируйте похожие классы. Например, сгруппировать классы «автомобиль» и «грузовик» в единый класс « транспортное средство».
Для получения дополнительной информации о предварительной обработке данных изображений см. «Предварительная обработка изображений для глубокого обучения».
Задача | Дополнительная информация |
---|---|
Изменение размера изображений | Чтобы использовать предварительно обученную сеть, необходимо изменить размер изображений на размер входа сети. Чтобы изменить размер изображений, используйте auimds = augmentedImageDatastore(inputSize,imds); Совет Использовать Не используйте
|
Увеличение изображения | Чтобы избежать избыточной подгонки, используйте преобразование изображения. Дополнительные сведения см. в разделе Train сети с помощью дополненных изображений. |
Нормализуйте регрессионые цели | Нормализуйте предикторы перед тем, как вы вводите их в сеть. Если вы нормализуете ответы перед обучением, то вы должны преобразовать предсказания обученной сети, чтобы получить предсказания исходных ответов. Для получения дополнительной информации см. «Train сверточной нейронной сети для регрессии». |
Для получения дополнительной информации о работе с сетями LSTM, смотрите Длинные Краткосрочные Сети Памяти.
Задача | Дополнительная информация |
---|---|
Нормализуйте данные последовательности | Чтобы нормализовать данные последовательности, сначала вычислите среднее значение по признакам и стандартное отклонение для всех последовательностей. Затем для каждого обучающего наблюдения вычитайте среднее значение и разделите на стандартное отклонение. Дополнительные сведения см. в разделе «Нормализация данных последовательности». |
Уменьшите заполнение и усечение последовательности | Чтобы уменьшить объем заполнения или отброшенных данных при заполнении или усечении последовательностей, попробуйте отсортировать данные по длине последовательности. Для получения дополнительной информации см. Раздел «Заполнение последовательности», «Усечение» и «Разделение». |
Задайте размер мини-пакета и опции заполнения для предсказания | При выполнении предсказаний с последовательностями разной длины мини-размер пакета может повлиять на количество заполнения, добавленного к входным данным, что может привести к различным предсказанным значениям. Попробуйте использовать различные значения, чтобы увидеть, какие из них лучше всего работают с вашей сетью. Чтобы задать размер мини-пакета и опции заполнения, используйте |
Чтобы задать окружение выполнения, используйте 'ExecutionEnvironment'
опция в trainingOptions
.
Проблема | Дополнительная информация |
---|---|
Обучение на центральном процессоре идет медленно | Если обучение слишком медленно на одном центральном процессоре, попробуйте использовать предварительно обученную нейронную сеть для глубокого обучения в качестве экстрактора функций и обучите модель машинного обучения. Для получения примера смотрите Извлечение изображения Функций с использованием предварительно обученной сети. |
Обучение LSTM на графическом процессоре происходит медленно | Центральный процессор лучше подходит для настройки сети LSTM с использованием мини-пакетов с короткими последовательностями. Чтобы использовать центральный процессор, установите |
Программное обеспечение не использует все доступные графические процессоры | Если у вас есть доступ к машине с несколькими графическими процессорами, просто установите 'ExecutionEnvironment' опция в trainingOptions на 'multi-gpu' . Для получения дополнительной информации смотрите Глубокое Обучение на нескольких графических процессорах. |
Для получения дополнительной информации смотрите Шкалу Глубокого Обучения Параллельно и в Облаке.
Если вы не можете загрузить слои или сеть из MAT-файла и получите предупреждение о форме
Warning: Unable to load instances of class layerType into a heterogeneous array. The definition of layerType could be missing or contain an error. Default objects will be substituted. Warning: While loading an object of class 'SeriesNetwork': Error using 'forward' in Layer nnet.cnn.layer.MissingLayer. The function threw an error and could not be executed.
Файл содержит пользовательский слой не в пути - Чтобы загрузить сети, содержащие пользовательские слои, добавьте пользовательские файлы слоя в MATLAB® путь.
Файл содержит пользовательский слой из пакета поддержки - Чтобы загрузить сети с помощью слоев из пакетов поддержки, установите необходимый пакет поддержки в командной строке при помощи соответствующей функции (для примера, resnet18
) или с помощью Add-On Explorer.
Файл содержит пользовательский слой из примера документации, которого нет в пути - Чтобы загрузить сети, содержащие пользовательские слои из примеров документации, откройте пример как Live Script и скопируйте слой из папки примера в вашу рабочую директорию.
Файл содержит слой из не установленного тулбокса - Для доступа к слоям из других тулбоксов, например, Computer Vision Toolbox или Symbolic Math Toolbox, установите соответствующий тулбокс.
Попробовав предложенные решения, перезагрузите MAT-файл.
analyzeNetwork
| checkLayer
| Deep Network Designer | trainingOptions