Эта страница описывает различные опции обучения и методы для улучшения точности нейронных сетей для глубокого обучения.
Соответствующая сетевая архитектура зависит от задачи и доступных данных. Рассмотрите эти предложения при решении, какую архитектуру использовать и использовать ли предварительно обученную сеть или обучаться с нуля.
Данные | Описание задачи | Узнать больше |
---|---|---|
Изображения | Классификация естественных изображений | Попробуйте различные предварительно обученные сети. Для списка предварительно обученных нейронных сетей для глубокого обучения смотрите Предварительно обученные Глубокие нейронные сети. Чтобы изучить, как в интерактивном режиме подготовить сеть к передаче, изучающей использование 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