В этом примере показано, как обучить сеть, которая классифицирует рукописные цифры с пользовательским расписанием скорости обучения.
Если trainingOptions
не предоставляет возможности, в которых вы нуждаетесь (например, пользовательское расписание скорости обучения), затем можно задать собственный учебный цикл с помощью автоматического дифференцирования.
Этот пример обучает сеть, чтобы классифицировать рукописные цифры с основанным на времени расписанием скорости обучения затухания: для каждой итерации решатель использует скорость обучения, данную , где t является номером итерации, начальная скорость обучения, и k является затуханием.
Загрузите обучающие данные
Загрузите данные о цифрах.
Сеть Define
Задайте сеть и задайте среднее изображение с помощью 'Mean'
опция в изображении ввела слой.
Создайте dlnetwork
объект от графика слоев.
dlnet =
dlnetwork with properties:
Layers: [12×1 nnet.cnn.layer.Layer]
Connections: [11×2 table]
Learnables: [14×3 table]
State: [6×3 table]
InputNames: {'input'}
OutputNames: {'softmax'}
Функция градиентов модели Define
Создайте функциональный modelGradients
, перечисленный в конце примера, который берет dlnetwork
объект dlnet
, мини-пакет входных данных dlX
с соответствием маркирует Y
и возвращает градиенты потери относительно настраиваемых параметров в dlnet
и соответствующая потеря.
Задайте опции обучения
Обучайтесь с мини-пакетным размером 128 в течение 5 эпох.
Задайте опции для оптимизации SGDM. Укажите, что начальная буква изучает уровень 0,01 с затуханием 0,01, и импульс 0.9.
Визуализируйте процесс обучения в графике.
Обучайтесь на графическом процессоре, если вы доступны. Используя графический процессор требует Parallel Computing Toolbox™, и CUDA® включил NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше.
Обучите модель
Обучите модель с помощью пользовательского учебного цикла.
В течение каждой эпохи переставьте данные и цикл по мини-пакетам данных. В конце каждой эпохи отобразите прогресс обучения.
Для каждого мини-пакета:
Преобразуйте метки в фиктивные переменные.
Преобразуйте данные в dlarray
объекты с базовым одним типом и указывают, что размерность маркирует 'SSCB'
(пространственный, пространственный, канал, пакет).
Для обучения графического процессора преобразуйте в gpuArray
объекты.
Оцените градиенты модели, состояние и потерю с помощью dlfeval
и modelGradients
функционируйте и обновите сетевое состояние.
Определите скорость обучения для основанного на времени расписания скорости обучения затухания.
Обновите сетевые параметры с помощью sgdmupdate
функция.
Инициализируйте график процесса обучения.
Инициализируйте скоростной параметр для решателя SGDM.
Обучите сеть.
Тестовая модель
Протестируйте точность классификации модели путем сравнения предсказаний на наборе тестов с истинными метками.
Преобразуйте данные в dlarray
объект с форматом размерности 'SSCB'
. Для предсказания графического процессора также преобразуйте данные в gpuArray
.
Классифицируйте изображения с помощью modelPredictions
функция, перечисленная в конце примера и, находит классы с самыми высокими баллами.
Оцените точность классификации.
Функция градиентов модели
modelGradients
функционируйте берет dlnetwork
объект dlnet
, мини-пакет входных данных dlX
с соответствием маркирует Y
и возвращает градиенты потери относительно настраиваемых параметров в dlnet
, сетевое состояние и потеря. Чтобы вычислить градиенты автоматически, используйте dlgradient
функция.
Функция предсказаний модели
modelPredictions
функционируйте берет dlnetwork
объект dlnet
, массив входных данных dlX
, и мини-пакетный размер и выходные параметры предсказания модели путем итерации по мини-пакетам заданного размера.