На этой странице описываются различные варианты обучения и методы повышения точности сетей глубокого обучения.
Соответствующая архитектура сети зависит от задачи и доступных данных. Учитывайте эти предложения при принятии решения о том, какую архитектуру использовать и использовать ли предварительно подготовленную сеть или тренироваться с нуля.
| Данные | Описание задачи | Подробнее |
|---|---|---|
| Изображения | Классификация природных изображений | Попробуйте использовать различные предварительно обученные сети. Список предварительно обученных сетей глубокого обучения см. в разделе Предварительно обученные нейронные сети. Сведения о том, как интерактивно подготовить сеть для обучения переносу с помощью 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'. |
| Использовать данные проверки | Чтобы указать данные проверки, используйте Примечание Если набор данных проверки слишком мал и недостаточно представляет данные, то представленные метрики могут не помочь. Использование слишком большого набора данных проверки может привести к замедлению обучения. |
| Для переноса обучения ускорьте обучение новых уровней и замедлите обучение в перенесенных уровнях | Укажите коэффициенты более высокого уровня обучения для новых слоев, используя, например, Уменьшите начальную скорость обучения с помощью При переводе обучения не нужно тренироваться на столько же эпох. Уменьшите количество эпох с помощью Сведения о том, как интерактивно подготовить сеть для обучения переносу с помощью Deep Network Designer, см. в разделе Обучение переносу с помощью Deep Network Designer. |
| Перетасовка данных каждую эпоху | Чтобы перетасовать данные каждую эпоху (один полный проход данных), установите
Примечание Для данных последовательности тасование может оказать негативное влияние на точность, так как оно может увеличить количество дополнений или усеченных данных. При наличии данных последовательности сортировка данных по длине последовательности может помочь. Дополнительные сведения см. в разделах Заполнение последовательности, усечение и разделение.
|
| Попробуйте использовать различные оптимизаторы | Чтобы указать различные оптимизаторы, используйте |
Дополнительные сведения см. в разделе Настройка параметров и сверточная нейронная сеть поезда.
Если вы заметили проблемы во время обучения, то рассмотрите эти возможные решения.
| Проблема | Возможное решение |
|---|---|
| NaNs или большие всплески потерь | Уменьшите начальную скорость обучения с помощью Если снижение скорости обучения не помогает, попробуйте использовать градиентную обрезку. Чтобы задать порог градиента, используйте |
| Потери по-прежнему уменьшаются в конце тренировки | Тренируйтесь дольше, увеличивая количество эпох, используя 'MaxEpochs' опция в trainingOptions. |
| Плато потерь | Если плато потерь при неожиданно высоком значении, то снизить скорость обучения на плато. Чтобы изменить график обучения, используйте Если снижение уровня обучения не поможет, то модель может оказаться недоукомплектованной. Попробуйте увеличить число параметров или слоев. Можно проверить, не подгоняется ли модель, отслеживая потерю проверки. |
| Потери при проверке намного выше, чем потери при обучении | Чтобы избежать переоборудования, попробуйте выполнить одно или несколько из следующих действий:
|
| Потери снижаются очень медленно | Увеличение начального уровня обучения с помощью Для получения данных изображения попробуйте включить в сеть слои пакетной нормализации. Дополнительные сведения см. в разделе |
Дополнительные сведения см. в разделе Настройка параметров и сверточная нейронная сеть поезда.
Если ваша сеть вообще не тренируется, то рассмотрим возможные решения.
| Ошибка | Описание | Возможное решение |
|---|---|---|
| Ошибка нехватки памяти при обучении | Доступное оборудование не может сохранить текущий мини-пакет, веса сети и вычисленные активации. | Попробуйте уменьшить размер мини-партии с помощью Если уменьшение размера мини-пакета не работает, попробуйте использовать сеть меньшего размера, уменьшив количество слоев или уменьшив количество параметров или фильтров в слоях. |
| Ошибки пользовательского слоя | Может возникнуть проблема с реализацией пользовательского слоя. | Проверка допустимости пользовательского слоя и поиск потенциальных проблем с помощью Если тест завершается неуспешно при использовании |
Тренировка бросает ошибку 'CUDA_ERROR_UNKNOWN' | Иногда GPU выдает эту ошибку, когда она используется как для запросов на вычисление, так и для запросов на отображение от ОС. | Попробуйте уменьшить размер мини-партии с помощью Если уменьшить размер мини-пакета не удается, то в Windows ® попробуйте настроить параметры обнаружения тайм-аута и восстановления (TDR). Например, измените |
Вы можете проанализировать свою сеть глубокого обучения с помощью analyzeNetwork. analyzeNetwork отображает интерактивную визуализацию сетевой архитектуры, обнаруживает ошибки и проблемы в сети и предоставляет подробную информацию о сетевых уровнях. Используйте анализатор сети для визуализации и понимания сетевой архитектуры, проверки правильности определения архитектуры и выявления проблем перед обучением. Проблемы, которые analyzeNetwork обнаруживаются отсутствующие или отсоединенные слои, несовпадающие или неправильные размеры входных данных слоев, неверное количество входных данных слоев и недопустимые структуры графиков.
Повысить точность можно путем предварительной обработки данных.
В идеале все классы имеют равное количество наблюдений. Однако для некоторых задач классы могут быть несбалансированными. Например, автомобильные наборы данных уличных сцен, как правило, имеют больше пикселей неба, здания и дороги, чем пиксели пешеходов и велосипедистов, потому что небо, здания и дороги покрывают больше области изображения. В случае неправильной обработки этот дисбаланс может нанести ущерб процессу обучения, поскольку обучение смещено в пользу доминирующих классов.
Для задач классификации можно указать веса классов с помощью 'ClassWeights' вариант classificationLayer. Для задач семантической сегментации можно указать веса классов с помощью ClassWeights (Панель инструментов компьютерного зрения) свойство pixelClassificationLayer(Панель инструментов компьютерного зрения).
Кроме того, можно сбалансировать классы, выполнив одно или несколько из следующих действий:
Добавьте новые наблюдения из наименее частых классов.
Удаление наблюдений из наиболее частых классов.
Группировать подобные классы. Например, сгруппировать классы «автомобиль» и «грузовик» в единый класс «транспортное средство».
Дополнительные сведения о предварительной обработке изображений см. в разделе Предварительная обработка изображений для глубокого обучения.
| Задача | Дополнительные сведения |
|---|---|
| Изменение размеров изображений | Чтобы использовать предварительно подготовленную сеть, необходимо изменить размер изображений в соответствии с входным размером сети. Для изменения размеров изображений используйте auimds = augmentedImageDatastore(inputSize,imds); Совет Использовать Не используйте
|
| Увеличение изображения | Чтобы избежать переоборудования, используйте преобразование изображения. Дополнительные сведения см. в разделе Обучение сети с дополненными изображениями. |
| Нормализация целей регрессии | Нормализуйте предикторы перед вводом их в сеть. Если вы нормализуете ответы перед тренировкой, то вы должны преобразовать прогнозы обученной сети, чтобы получить прогнозы исходных ответов. Дополнительные сведения см. в разделе Конволюционная нейронная сеть поезда для регрессии. |
Дополнительные сведения о работе с сетями LSTM см. в разделе Сети долговременной памяти.
| Задача | Дополнительные сведения |
|---|---|
| Нормализовать данные последовательности | Чтобы нормализовать данные последовательности, сначала вычислите среднее значение для каждого элемента и стандартное отклонение для всех последовательностей. Затем для каждого учебного наблюдения вычитают среднее значение и делят на стандартное отклонение. Дополнительные сведения см. в разделе Нормализация данных последовательности. |
| Уменьшение заполнения и усечения последовательности | Чтобы уменьшить количество дополнений или отброшенных данных при заполнении или усечении последовательностей, попробуйте отсортировать данные по длине последовательности. Дополнительные сведения см. в разделах Заполнение последовательности, усечение и разделение. |
| Укажите размер мини-пакета и параметры заполнения для прогнозирования | При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте |
Чтобы указать среду выполнения, используйте 'ExecutionEnvironment' опция в trainingOptions.
| Проблема | Дополнительные сведения |
|---|---|
| Обучение ЦП идет медленно | Если обучение происходит слишком медленно на одном процессоре, попробуйте использовать предварительно обученную сеть глубокого обучения в качестве экстрактора функций и обучите модели машинного обучения. Пример см. в разделе Извлечение элементов изображения с помощью предварительно обученной сети. |
| Обучение LSTM на GPU идет медленно | Процессор лучше подходит для обучения сети LSTM с использованием мини-пакетов с короткими последовательностями. Для использования CPU установите |
| Программное обеспечение использует не все доступные графические процессоры | Если у вас есть доступ к компьютеру с несколькими графическими процессорами, просто установите '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) или с помощью проводника надстроек.
Файл содержит пользовательский слой из примера документации, который отсутствует в пути. Чтобы загрузить сети, содержащие пользовательские слои, из примеров документации, откройте пример в виде Live Script и скопируйте слой из папки примеров в рабочую папку.
Файл содержит слой из панели инструментов, который не установлен - Чтобы получить доступ к слоям из других панелей инструментов, например, Computer Vision Toolbox или Text Analytics Toolbox, установите соответствующую панель инструментов.
Попробовав предложенные решения, перезагрузите MAT-файл.
analyzeNetwork | checkLayer | Конструктор глубоких сетей | trainingOptions