exponenta event banner

Советы и рекомендации по углубленному обучению

На этой странице описываются различные варианты обучения и методы повышения точности сетей глубокого обучения.

Выбор сетевой архитектуры

Соответствующая архитектура сети зависит от задачи и доступных данных. Учитывайте эти предложения при принятии решения о том, какую архитектуру использовать и использовать ли предварительно подготовленную сеть или тренироваться с нуля.

ДанныеОписание задачиПодробнее
ИзображенияКлассификация природных изображений

Попробуйте использовать различные предварительно обученные сети. Список предварительно обученных сетей глубокого обучения см. в разделе Предварительно обученные нейронные сети.

Сведения о том, как интерактивно подготовить сеть для обучения переносу с помощью Deep Network Designer, см. в разделе Обучение переносу с помощью Deep Network Designer.

Регрессия природных изображенийПопробуйте использовать различные предварительно обученные сети. Пример преобразования предварительно подготовленной классификационной сети в регрессионную сеть см. в разделе Преобразование классификационной сети в регрессионную сеть.
Классификация и регрессия ненатуральных изображений (например, крошечных изображений и спектрограмм

Пример классификации крошечных изображений см. в разделе Train Resident Network for Image Classification.

Пример классификации спектрограмм см. в разделе Распознавание речевых команд с помощью глубокого обучения.

Семантическая сегментацияComputer Vision Toolbox™ предоставляет инструменты для создания сетей глубокого обучения для семантической сегментации. Дополнительные сведения см. в разделе Начало работы с семантической сегментацией с использованием глубокого обучения (панель инструментов Computer Vision Toolbox).
Последовательности, временные ряды и сигналыКлассификация «последовательность-метка»Пример см. в разделе Классификация последовательностей с использованием глубокого обучения.
Классификация и регрессия последовательности к последовательностиДополнительные сведения см. в разделах Классификация последовательности к последовательности с использованием глубокого обучения и регрессия последовательности к последовательности с использованием глубокого обучения.
Прогнозирование временных рядовПример см. в разделе Прогнозирование временных рядов с использованием глубокого обучения.
ТекстКлассификация и регрессияText Analytics Toolbox™ предоставляет инструменты для создания сетей глубокого обучения для текстовых данных. Пример см. в разделе Классификация текстовых данных с помощью глубокого обучения.
Создание текстаПример см. в разделе Создание текста с помощью глубокого обучения.
АудиоАудиоклассификация и регрессияПример см. в разделе Распознавание речевых команд с помощью глубокого обучения.

Выбор параметров обучения

trainingOptions функция предоставляет различные возможности для обучения вашей сети глубокого обучения.

СоветДополнительные сведения
Контроль за ходом обученияЧтобы включить график хода обучения, установите 'Plots' опция в trainingOptions кому 'training-progress'.
Использовать данные проверки

Чтобы указать данные проверки, используйте 'ValidationData' опция в trainingOptions.

Примечание

Если набор данных проверки слишком мал и недостаточно представляет данные, то представленные метрики могут не помочь. Использование слишком большого набора данных проверки может привести к замедлению обучения.

Для переноса обучения ускорьте обучение новых уровней и замедлите обучение в перенесенных уровнях

Укажите коэффициенты более высокого уровня обучения для новых слоев, используя, например, WeightLearnRateFactor имущество convolution2dLayer.

Уменьшите начальную скорость обучения с помощью 'InitialLearnRate' вариант trainingOptions.

При переводе обучения не нужно тренироваться на столько же эпох. Уменьшите количество эпох с помощью 'MaxEpochs' опция в trainingOptions.

Сведения о том, как интерактивно подготовить сеть для обучения переносу с помощью Deep Network Designer, см. в разделе Обучение переносу с помощью Deep Network Designer.

Перетасовка данных каждую эпоху

Чтобы перетасовать данные каждую эпоху (один полный проход данных), установите 'Shuffle' опция в trainingOptions кому 'every-epoch'.

Примечание

Для данных последовательности тасование может оказать негативное влияние на точность, так как оно может увеличить количество дополнений или усеченных данных. При наличии данных последовательности сортировка данных по длине последовательности может помочь. Дополнительные сведения см. в разделах Заполнение последовательности, усечение и разделение.

Попробуйте использовать различные оптимизаторы

Чтобы указать различные оптимизаторы, используйте solverName аргумент в trainingOptions.

Дополнительные сведения см. в разделе Настройка параметров и сверточная нейронная сеть поезда.

Повышение точности обучения

Если вы заметили проблемы во время обучения, то рассмотрите эти возможные решения.

ПроблемаВозможное решение
NaNs или большие всплески потерь

Уменьшите начальную скорость обучения с помощью 'InitialLearnRate' вариант trainingOptions.

Если снижение скорости обучения не помогает, попробуйте использовать градиентную обрезку. Чтобы задать порог градиента, используйте 'GradientThreshold' опция в trainingOptions.

Потери по-прежнему уменьшаются в конце тренировкиТренируйтесь дольше, увеличивая количество эпох, используя 'MaxEpochs' опция в trainingOptions.
Плато потерь

Если плато потерь при неожиданно высоком значении, то снизить скорость обучения на плато. Чтобы изменить график обучения, используйте 'LearnRateSchedule' опция в trainingOptions.

Если снижение уровня обучения не поможет, то модель может оказаться недоукомплектованной. Попробуйте увеличить число параметров или слоев. Можно проверить, не подгоняется ли модель, отслеживая потерю проверки.

Потери при проверке намного выше, чем потери при обучении

Чтобы избежать переоборудования, попробуйте выполнить одно или несколько из следующих действий:

Потери снижаются очень медленно

Увеличение начального уровня обучения с помощью 'InitialLearnRate' вариант trainingOptions.

Для получения данных изображения попробуйте включить в сеть слои пакетной нормализации. Дополнительные сведения см. в разделе batchNormalizationLayer.

Дополнительные сведения см. в разделе Настройка параметров и сверточная нейронная сеть поезда.

Исправление ошибок в обучении

Если ваша сеть вообще не тренируется, то рассмотрим возможные решения.

ОшибкаОписаниеВозможное решение
Ошибка нехватки памяти при обученииДоступное оборудование не может сохранить текущий мини-пакет, веса сети и вычисленные активации.

Попробуйте уменьшить размер мини-партии с помощью 'MiniBatchSize' вариант trainingOptions.

Если уменьшение размера мини-пакета не работает, попробуйте использовать сеть меньшего размера, уменьшив количество слоев или уменьшив количество параметров или фильтров в слоях.

Ошибки пользовательского слояМожет возникнуть проблема с реализацией пользовательского слоя.

Проверка допустимости пользовательского слоя и поиск потенциальных проблем с помощью checkLayer.

Если тест завершается неуспешно при использовании checkLayer, то функция обеспечивает тестовую диагностику и рамочную диагностику. При тестовой диагностике выявляются любые проблемы уровня, в то время как при диагностике инфраструктуры предоставляется более подробная информация. Дополнительные сведения о тестовой диагностике и рекомендации по возможным решениям см. в разделе Диагностика.

Тренировка бросает ошибку 'CUDA_ERROR_UNKNOWN'Иногда GPU выдает эту ошибку, когда она используется как для запросов на вычисление, так и для запросов на отображение от ОС.

Попробуйте уменьшить размер мини-партии с помощью 'MiniBatchSize' вариант trainingOptions.

Если уменьшить размер мини-пакета не удается, то в Windows ® попробуйте настроить параметры обнаружения тайм-аута и восстановления (TDR). Например, измените TdrDelay от 2 секунд (по умолчанию) до 4 секунд (требуется изменение реестра).

Вы можете проанализировать свою сеть глубокого обучения с помощью analyzeNetwork. analyzeNetwork отображает интерактивную визуализацию сетевой архитектуры, обнаруживает ошибки и проблемы в сети и предоставляет подробную информацию о сетевых уровнях. Используйте анализатор сети для визуализации и понимания сетевой архитектуры, проверки правильности определения архитектуры и выявления проблем перед обучением. Проблемы, которые analyzeNetwork обнаруживаются отсутствующие или отсоединенные слои, несовпадающие или неправильные размеры входных данных слоев, неверное количество входных данных слоев и недопустимые структуры графиков.

Подготовка и предварительная обработка данных

Повысить точность можно путем предварительной обработки данных.

Классы веса или баланса

В идеале все классы имеют равное количество наблюдений. Однако для некоторых задач классы могут быть несбалансированными. Например, автомобильные наборы данных уличных сцен, как правило, имеют больше пикселей неба, здания и дороги, чем пиксели пешеходов и велосипедистов, потому что небо, здания и дороги покрывают больше области изображения. В случае неправильной обработки этот дисбаланс может нанести ущерб процессу обучения, поскольку обучение смещено в пользу доминирующих классов.

Для задач классификации можно указать веса классов с помощью 'ClassWeights' вариант classificationLayer. Для задач семантической сегментации можно указать веса классов с помощью ClassWeights (Панель инструментов компьютерного зрения) свойство pixelClassificationLayer(Панель инструментов компьютерного зрения).

Кроме того, можно сбалансировать классы, выполнив одно или несколько из следующих действий:

  • Добавьте новые наблюдения из наименее частых классов.

  • Удаление наблюдений из наиболее частых классов.

  • Группировать подобные классы. Например, сгруппировать классы «автомобиль» и «грузовик» в единый класс «транспортное средство».

Данные изображения предварительной обработки

Дополнительные сведения о предварительной обработке изображений см. в разделе Предварительная обработка изображений для глубокого обучения.

ЗадачаДополнительные сведения
Изменение размеров изображений

Чтобы использовать предварительно подготовленную сеть, необходимо изменить размер изображений в соответствии с входным размером сети. Для изменения размеров изображений используйте augmentedImageDatastore. Например, этот синтаксис изменяет размер изображений в хранилище данных изображений imds:

auimds = augmentedImageDatastore(inputSize,imds);

Совет

Использовать augmentedImageDatastore для эффективной предварительной обработки изображений для глубокого обучения, включая изменение размеров изображений.

Не используйте readFcn вариант imageDatastore для предварительной обработки или изменения размера, поскольку этот параметр обычно значительно медленнее.

Увеличение изображения

Чтобы избежать переоборудования, используйте преобразование изображения. Дополнительные сведения см. в разделе Обучение сети с дополненными изображениями.

Нормализация целей регрессии

Нормализуйте предикторы перед вводом их в сеть. Если вы нормализуете ответы перед тренировкой, то вы должны преобразовать прогнозы обученной сети, чтобы получить прогнозы исходных ответов.

Дополнительные сведения см. в разделе Конволюционная нейронная сеть поезда для регрессии.

Данные последовательности предварительной обработки

Дополнительные сведения о работе с сетями LSTM см. в разделе Сети долговременной памяти.

ЗадачаДополнительные сведения
Нормализовать данные последовательности

Чтобы нормализовать данные последовательности, сначала вычислите среднее значение для каждого элемента и стандартное отклонение для всех последовательностей. Затем для каждого учебного наблюдения вычитают среднее значение и делят на стандартное отклонение.

Дополнительные сведения см. в разделе Нормализация данных последовательности.

Уменьшение заполнения и усечения последовательности

Чтобы уменьшить количество дополнений или отброшенных данных при заполнении или усечении последовательностей, попробуйте отсортировать данные по длине последовательности.

Дополнительные сведения см. в разделах Заполнение последовательности, усечение и разделение.

Укажите размер мини-пакета и параметры заполнения для прогнозирования

При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети.

Чтобы указать размер мини-пакета и параметры заполнения, используйте 'MiniBatchSize' и 'SequenceLength' варианты classify, predict, classifyAndUpdateState, и predictAndUpdateState функции.

Использовать доступное оборудование

Чтобы указать среду выполнения, используйте 'ExecutionEnvironment' опция в trainingOptions.

ПроблемаДополнительные сведения
Обучение ЦП идет медленноЕсли обучение происходит слишком медленно на одном процессоре, попробуйте использовать предварительно обученную сеть глубокого обучения в качестве экстрактора функций и обучите модели машинного обучения. Пример см. в разделе Извлечение элементов изображения с помощью предварительно обученной сети.
Обучение LSTM на GPU идет медленно

Процессор лучше подходит для обучения сети LSTM с использованием мини-пакетов с короткими последовательностями. Для использования CPU установите 'ExecutionEnvironment' опция в trainingOptions кому 'cpu'.

Программное обеспечение использует не все доступные графические процессорыЕсли у вас есть доступ к компьютеру с несколькими графическими процессорами, просто установите 'ExecutionEnvironment' опция в trainingOptions кому 'multi-gpu'. Дополнительные сведения см. в разделе Глубокое обучение нескольким графическим процессорам.

Дополнительные сведения см. в разделе Масштабирование глубокого обучения параллельно и в облаке.

Исправление ошибок при загрузке из файлов MAT

Если не удается загрузить слои или сеть из 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. 
тогда сеть в MAT-файле может содержать недоступные слои. Это может быть обусловлено следующим:

  • Файл содержит пользовательский слой, не находящийся в пути - Чтобы загрузить сети, содержащие пользовательские слои, добавьте файлы пользовательских слоев в путь MATLAB ®.

  • Файл содержит пользовательский слой из пакета поддержки - Для загрузки сетей с использованием слоев из пакетов поддержки установите требуемый пакет поддержки в командной строке с помощью соответствующей функции (например, resnet18) или с помощью проводника надстроек.

  • Файл содержит пользовательский слой из примера документации, который отсутствует в пути. Чтобы загрузить сети, содержащие пользовательские слои, из примеров документации, откройте пример в виде Live Script и скопируйте слой из папки примеров в рабочую папку.

  • Файл содержит слой из панели инструментов, который не установлен - Чтобы получить доступ к слоям из других панелей инструментов, например, Computer Vision Toolbox или Text Analytics Toolbox, установите соответствующую панель инструментов.

Попробовав предложенные решения, перезагрузите MAT-файл.

См. также

| | |

Связанные темы