Сгенерируйте универсальный код C/C + + для нейронных сетей для глубокого обучения

С MATLAB® Coder™ можно сгенерировать типовой код C or C++ для предсказания из уже обученной сверточной нейронной сети (CNN). Сгенерированный код C/C + + не зависит ни от каких сторонних библиотек. Сгенерированный код реализует CNN с архитектурой, слоями и параметрами, заданными в вход SeriesNetwork (Deep Learning Toolbox) или DAGNetwork (Deep Learning Toolbox) сетевой объект. Смотрите Поддерживаемые сети и слои для генерации кода.

Сгенерируйте код с помощью одного из следующих методов:

  • Стандарт codegen команда для генерации кода C/C + + из кода MATLAB.

  • Приложение MATLAB Coder.

Требования

  • В Windows®, генерация кода для нейронных сетей для глубокого обучения с codegen функция требует Microsoft® Визуальная студия® или MinGW® компилятор.

  • Интерфейс MATLAB Coder для библиотек глубокого обучения. Чтобы установить этот пакет поддержки, выберите его в меню Add-Ons MATLAB.

  • Deep Learning Toolbox™.

Генерация кода при помощи codegen

  1. Напишите функцию точки входа в MATLAB, которая:

    • Использует coder.loadDeepLearningNetwork функция для создания и настройки сетевого объекта CNN. Для получения дополнительной информации смотрите Загрузка предварительно обученных сетей для генерации кода.

    • Вызывает predict (Deep Learning Toolbox) метод сети на входном параметре функции точки входа.

    • Задает MiniBatchSize в predict способ управления использованием памяти для предсказания на нескольких входных изображениях или наблюдениях.

    Для примера:

    function out = my_predict(in) %#codegen
    
    % A persistent object mynet is used to load the series network object.
    % At the first call to this function, the persistent object is constructed and
    % setup. When the function is called subsequent times, the same object is reused 
    % to call predict on inputs, thus avoiding reconstructing and reloading the
    % network object.
    
    persistent mynet;
    
    if isempty(mynet)
        mynet = coder.loadDeepLearningNetwork('myNetwork.mat');
    end
    
    % pass in input   
    out = predict(mynet,in,'MiniBatchSize',2); 

  2. Создайте объект строения глубокого обучения dlconfig который сконфигурирован для генерации типового кода C/C + + при помощи coder.DeepLearningConfig функция.

    dlconfig = coder.DeepLearningConfig(TargetLibrary='none');

    Создайте объект строения генерации кода для MEX или для статической или динамически связанной библиотеки. По умолчанию генератор кода производит типовой код С Чтобы создать универсальный код С++, в объекте строения генерации кода установите TargetLang параметр в 'C++'. Установите DeepLearningConfig параметр к ранее созданному объекту dlconfig.

    cfg = coder.config('lib');
    cfg.TargetLang = 'C++';
    cfg.DeepLearningConfig = dlconfig;
  3. Запуск codegen команда. Используйте -config опция для задания объекта строения. Используйте -args опция для задания типа входа.

    codegen -config cfg my_predict -args {myInput} -report

    Примечание

    Можно задать входы половинной точности для генерации кода. Однако тип генератора кода приводит входы к одинарной точности. Deep Learning Toolbox использует арифметику с одной точностью и плавающей точкой для всех расчетов в MATLAB.

Генерация кода при помощи приложения MATLAB Coder

  1. Следуйте обычным шагам для определения функции точки входа и определения входных типов. См. «Генерация кода С при помощи приложения MATLAB Coder».

  2. На Generate Code шаге:

    • Установите Language значение C или C++.

    • Нажмите More Settings. На панели Deep Learning задайте Target library None.

  3. Сгенерируйте код.

См. также

| |

Похожие темы