Эта страница описывает различные опции обучения и методы для улучшения точности нейронных сетей для глубокого обучения.
Соответствующая сетевая архитектура зависит от задачи и доступных данных. Рассмотрите эти предложения при решении, какую архитектуру использовать и использовать ли предварительно обученную сеть или обучаться с нуля.
Данные | Описание задачи | Узнать больше |
---|---|---|
Изображения | Классификация естественных изображений | Попробуйте различные предварительно обученные сети. Для списка предварительно обученных нейронных сетей для глубокого обучения смотрите Предварительно обученные Глубокие нейронные сети. Чтобы изучить, как в интерактивном режиме подготовить сеть к передаче обучения с помощью Deep Network Designer, смотрите Передачу обучения с Deep Network Designer. |
Регрессия естественных изображений | Попробуйте различные предварительно обученные сети. Для примера, показывающего, как преобразовать предварительно обученную сеть классификации в сеть регрессии, смотрите, Преобразуют Сеть Классификации в Сеть Регрессии. | |
Классификация и регрессия ненатуральных изображений (например, крошечных изображений и спектрограмм | Для примера, показывающего, как классифицировать крошечные изображения, смотрите, Обучают Остаточную Сеть для Классификации Изображений. Для примера, показывающего, как классифицировать спектрограммы, смотрите Распознание речевых команд с использованием глубокого обучения. | |
Семантическая сегментация | Computer Vision Toolbox™ обеспечивает инструменты, чтобы создать нейронные сети для глубокого обучения для семантической сегментации. Для получения дополнительной информации смотрите Начало работы с Семантической Сегментацией Используя Глубокое обучение (Computer Vision Toolbox). | |
Последовательности, временные ряды и сигналы | Классификация последовательностей к метке | Для примера смотрите, что Классификация Последовательностей Использует Глубокое обучение. |
Классификация от последовательности к последовательности и регрессия | Чтобы узнать больше, смотрите, что Классификация От последовательности к последовательности Использует Регрессию Глубокого обучения и От последовательности к последовательности Используя Глубокое обучение. | |
Прогнозирование временных рядов | Для примера смотрите, что Временные ряды Предсказывают Используя Глубокое обучение. | |
Текст | Классификация и регрессия | Text Analytics Toolbox™ обеспечивает инструменты, чтобы создать нейронные сети для глубокого обучения для текстовых данных. Для примера смотрите, Классифицируют текстовые Данные Используя Глубокое обучение. |
Текстовая генерация | Для примера смотрите, Генерируют текст Используя Глубокое обучение. | |
Аудио | Аудио классификация и регрессия | Для примера смотрите Распознание речевых команд с использованием глубокого обучения. |
trainingOptions
функция предоставляет множество возможностей, чтобы обучить вашу нейронную сеть для глубокого обучения.
Совет | Больше информации |
---|---|
Контролируйте процесс обучения | Чтобы включить график процесса обучения, установите 'Plots' опция в trainingOptions к 'training-progress' . |
Используйте данные о валидации | Чтобы задать данные о валидации, используйте ПримечаниеЕсли ваш набор данных валидации слишком мал и не достаточно представляет данные, то метрики, о которых сообщают, не могут помочь вам. Используя слишком большую валидацию набор данных может привести к более медленному обучению. |
Для передачи обучения ускорьте приобретение знаний о новых слоях и замедлите изучение в переданных слоях | Задайте факторы уровня высшего образования для новых слоев при помощи, например, Уменьшите начальную скорость обучения с помощью Когда передача обучения, вы не должны обучаться для как много эпох. Сократите число эпох с помощью Чтобы изучить, как в интерактивном режиме подготовить сеть к передаче обучения с помощью Deep Network Designer, смотрите Передачу обучения с Deep Network Designer. |
Переставьте свои данные каждая эпоха | Чтобы переставить ваши данные каждая эпоха (одна вся передача данных), установите
ПримечаниеДля данных о последовательности перестановка может оказать негативное влияние на точность, когда это может увеличить объем дополнения или усеченных данных. Если у вас есть данные о последовательности, то сортировка данных длиной последовательности может помочь. Чтобы узнать больше, смотрите, что Последовательность Дополняет, Усечение, и Разделяет.
|
Попробуйте различные оптимизаторы | Чтобы задать различные оптимизаторы, используйте |
Для получения дополнительной информации смотрите Настроенные Параметры и Обучите Сверточную нейронную сеть.
Если вы замечаете проблемы во время обучения, то рассматриваете эти возможные решения.
Проблема | Возможное решение |
---|---|
NaNs или большие скачки в потере | Уменьшите начальную скорость обучения с помощью Если уменьшение скорости обучения не помогает, затем пытается использовать усечение градиента. Чтобы установить порог градиента, используйте |
Потеря все еще уменьшается в конце обучения | Обучайтесь для дольше путем увеличения числа эпох с помощью 'MaxEpochs' опция в trainingOptions . |
Плато потерь | Если плато потерь в неожиданно высоком значении, то пропустите скорость обучения в плато. Чтобы изменить расписание скорости обучения, используйте Если отбрасывание скорости обучения не помогает, затем сила модели является underfitting. Попытайтесь увеличить число параметров или слоев. Можно проверять, является ли модель underfitting путем контроля потери валидации. |
Потеря валидации намного выше, чем учебная потеря | Чтобы предотвратить сверхподбор кривой, попробуйте один или несколько из следующего:
|
Потеря уменьшается очень медленно | Увеличьте начальную скорость обучения с помощью Для данных изображения попробуйте включая слои нормализации партии. в вашей сети. Для получения дополнительной информации смотрите |
Для получения дополнительной информации смотрите Настроенные Параметры и Обучите Сверточную нейронную сеть.
Если ваша сеть не обучается вообще, то рассмотрите возможные решения.
Ошибка | Описание | Возможное решение |
---|---|---|
Ошибка из памяти, когда обучение | Доступное оборудование не может сохранить текущий мини-пакет, сетевые веса и вычисленные активации. | Попытайтесь уменьшать мини-пакетный размер с помощью Если сокращение мини-пакетного размера не работает, затем пытается использовать меньшую сеть, сокращая количество слоев, или сокращая количество параметров или просачивается слои. |
Пользовательские ошибки слоя | Могла быть проблема с реализацией пользовательского слоя. | Проверяйте валидность пользовательского слоя и найдите потенциальные проблемы с помощью Если тест перестал работать, когда вы используете |
Обучение выдает ошибку 'CUDA_ERROR_UNKNOWN' | Иногда, графический процессор выдает эту ошибку, когда это используется, и для вычислить и отображают запросы от ОС. | Попытайтесь уменьшать мини-пакетный размер с помощью Если сокращение мини-пакетного размера не работает, затем в Windows®, пытается настроить настройки Timeout Detection и Recovery (TDR). Например, измените |
Можно анализировать нейронную сеть для глубокого обучения с помощью analyzeNetwork
. analyzeNetwork
функционируйте отображает интерактивную визуализацию сетевой архитектуры, обнаруживает ошибки и проблемы с сетью, и предоставляет подробную информацию о слоях сети. Используйте сетевой анализатор, чтобы визуализировать и изучить сетевую архитектуру, проверять, что вы задали архитектуру правильно и обнаруживаете проблемы перед обучением. Проблемы, что analyzeNetwork
обнаруживает включают пропавших без вести или отключенные слои, которым не соответствуют или неправильные размеры входных параметров слоя, неправильное количество входных параметров слоя и недопустимые структуры графика.
Можно улучшить точность путем предварительной обработки данных.
Идеально, все классы имеют равное количество наблюдений. Однако для некоторых задач, классы могут быть неустойчивыми. Например, автомобильные наборы данных уличных сцен имеют тенденцию иметь больше неба, создания и дорожных пикселей, чем пиксели пешехода и велосипедиста, потому что небо, создания и дороги покрывают больше области изображения. Если не обработанный правильно, эта неустойчивость может быть вредна для процесса обучения, потому что изучение смещается в пользу доминирующих классов.
Для задач семантической сегментации можно задать веса класса в pixelClassificationLayer
использование ClassWeights
свойство. Для задач классификации изображений можно использовать пример, пользовательский слой классификации, обеспеченный в, Задает Пользовательский Взвешенный Слой Классификации.
В качестве альтернативы можно сбалансировать классы путем выполнения одного или нескольких из следующего:
Добавьте новые наблюдения из наименее частых классов.
Удалите наблюдения из самых частых классов.
Группа подобные классы. Например, сгруппируйте классы "автомобиль" и "грузовик" в единый класс "транспортное средство".
Для получения дополнительной информации о предварительной обработке данных изображения, смотрите, Предварительно обрабатывают Изображения для Глубокого обучения.
Задача | Больше информации |
---|---|
Измените размер изображений | Чтобы использовать предварительно обученную сеть, необходимо изменить размер изображений к входному размеру сети. Чтобы изменить размер изображений, используйте auimds = augmentedImageDatastore(inputSize,imds); СоветИспользуйте Не используйте
|
Отобразите увеличение | Чтобы постараться не сверхсоответствовать, используйте преобразование изображений. Чтобы узнать больше, смотрите, Обучат сеть с Увеличенными Изображениями. |
Нормируйте цели регрессии | Нормируйте предикторы, прежде чем вы введете их к сети. Если вы нормируете ответы перед обучением, то необходимо преобразовать предсказания обучившего сеть, чтобы получить предсказания исходных ответов. Для получения дополнительной информации смотрите, Обучают Сверточную нейронную сеть Регрессии. |
Для получения дополнительной информации о работе с сетями 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 или Text Analytics Toolbox, установите соответствующий тулбокс.
После попытки предложенных решений перезагрузите MAT-файл.
Deep Network Designer | analyzeNetwork
| checkLayer
| trainingOptions