Deep Network Quantizer

Квантуйте глубокую нейронную сеть к 8-битным масштабированным целочисленным типам данных

Описание

Используйте приложение Deep Network Quantizer, чтобы уменьшать требования к памяти глубокой нейронной сети путем квантования весов, смещений и активаций слоев свертки к 8-битным масштабированным целочисленным типам данных. Используя это приложение вы можете:

  • Визуализируйте динамические диапазоны слоев свертки в глубокой нейронной сети.

  • Выберите отдельные слоя сети, чтобы квантовать.

  • Задницы производительность квантованной сети.

  • Сгенерируйте код графического процессора, чтобы развернуть квантованную сеть с помощью GPU Coder.

Квантование нейронной сети требует графического процессора, Интерфейса GPU Coder™ для пакета поддержки Библиотек Глубокого обучения и пакета поддержки Библиотеки Квантования Модели Deep Learning Toolbox™. Используя графический процессор требует, чтобы CUDA® включил NVIDIA®, графический процессор с вычисляет возможность 6.1 или выше.

Deep Network Quantizer app

Откройте глубокое сетевое приложение квантизатора

  • Командная строка MATLAB®: Введите deepNetworkQuantizer.

Примеры

развернуть все

  1. Загрузите сеть, чтобы квантовать в базовое рабочее пространство.

    net
    net = 
    
      DAGNetwork with properties:
    
             Layers: [68x1 nnet.cnn.layer.Layer]
        Connections: [75x2 table]
         InputNames: {'data'}
        OutputNames: {'new_classoutput'}
  2. Задайте данные о калибровке и валидации.

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

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

    В этом примере используйте изображения в MerchData набор данных. Задайте augmentedImageDatastore объект изменить размер данных для сети. Затем разделите данные в наборы данных калибровки и валидации.

    unzip('MerchData.zip');
    imds = imageDatastore('MerchData', ...
        'IncludeSubfolders',true, ...
        'LabelSource','foldernames');
    [calData, valData] = splitEachLabel(imds, 0.7, 'randomized');
    aug_calData = augmentedImageDatastore([227 227], calData);
    aug_valData = augmentedImageDatastore([227 227], valData);
  3. В командной строке MATLAB откройте приложение.

    deepNetworkQuantizer
  4. В приложении нажмите кнопку New. Приложение проверяет вашу среду выполнения. Чтобы использовать приложение Deep Network Quantizer, у вас должна быть среда выполнения графического процессора. Если нет никакого доступного графического процессора, этот шаг производит ошибку.

  5. В диалоговом окне выберите сеть, чтобы квантовать от базового рабочего пространства.

    Select a network

    После выбора сети, отображения приложения график слоев сети.

  6. В разделе Calibrate панели инструментов, под Calibration Data, выбирают augmentedImageDatastore объект от базового рабочего пространства, содержащего калибровочные данные, calData.

  7. Нажмите Calibrate.

    Deep Network Quantizer использует калибровочные данные, чтобы осуществить сеть и собрать информацию области значений для настраиваемых параметров в слоях сети.

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

    Deep Network Quantizer calibration

  8. В столбце Quantize таблицы укажите, квантовать ли настраиваемые параметры в слое. Слои, которые не являются слоями свертки, не могут быть квантованы, и поэтому не могут быть выбраны. Слои, которые не квантуются, остаются в с одинарной точностью после квантования.

  9. В разделе Validate панели инструментов, под Validation Data, выбирают augmentedImageDatastore объект от базового рабочего пространства, содержащего данные о валидации, valData.

  10. Нажмите Quantize and Validate.

    Deep Network Quantizer квантует веса, активации и смещения слоев свертки в сети к масштабированным 8-битным целочисленным типам данных и использует данные о валидации, чтобы осуществить сеть. Приложение определяет метрическую функцию, чтобы использовать в валидации на основе типа сети, которая квантуется.

    Тип сетиМетрическая функция
    Классификация

    Лучшая 1 Точность – Точность сети

    Регрессия

    MSE – Среднеквадратическая ошибка сети

    Когда валидация завершена, отображения приложения результаты валидации, включая:

    • Метрическая функция используется в валидации

    • Результат метрической функции до и после квантования

    • Требования к памяти сети до и после квантования (Мбайт)

    Deep Network Quantizer validation

  11. После квантования и проверки сети, можно принять решение экспортировать квантованную сеть.

    Нажмите кнопку Export. В выпадающем выберите Export Quantizer создать dlquantizer объект в базовом рабочем пространстве. Чтобы открыть приложение GPU Coder и сгенерировать код графического процессора от квантованной нейронной сети, выберите Generate Code. Генерация кода графического процессора требует лицензии GPU Coder.

    Если производительность квантованной сети не является удовлетворительной, можно принять решение не квантовать некоторые слои путем отмены выбора слоя в таблице. Чтобы видеть эффекты, нажмите Quantize and Validate снова.

Связанные примеры

Смотрите также

Приложения

Функции

Введенный в R2020a