Введение в генерацию кода

MATLAB® Coder™ генерирует читаемый и портативный C и Код С++ от функций Statistics and Machine Learning Toolbox™ та генерация кода поддержки. Можно интегрировать сгенерированный код в проекты как исходный код, статические библиотеки или динамические библиотеки. Можно также использовать сгенерированный код в среде MATLAB, чтобы ускорить в вычислительном отношении интенсивные фрагменты кода MATLAB.

Генерация кода C/C++ требует MATLAB Coder и имеет нижеследующие ограничения:

  • Вы не можете вызвать функцию в верхнем уровне при генерации кода при помощи codegen (MATLAB Coder). Вместо этого вызовите функцию в функции точки входа, и затем сгенерируйте код от функции точки входа. Функция точки входа, также известная как или первичную функцию верхнего уровня, является функцией, которую вы задаете для генерации кода. Все функции в функции точки входа должны поддержать генерацию кода.

  • Ограничения MATLAB Coder также применяются к Statistics and Machine Learning Toolbox за генерацию кода. Для получения дополнительной информации смотрите Функции языка MATLAB, Поддерживавшие для Генерации кода C/C++ (MATLAB Coder).

  • Генерация кода в Statistics and Machine Learning Toolbox не поддерживает разреженные матрицы.

  • Для указаний и ограничений по применению генерации кода для каждой функции смотрите раздел Code Generation на странице ссылки на функцию.

Для списка функций Statistics and Machine Learning Toolbox, которые поддерживают генерацию кода, см. Функциональный Список (Генерация кода C/C++).

Рабочие процессы генерации кода

Можно сгенерировать код C/C++ для функций Statistics and Machine Learning Toolbox несколькими способами.

  • Общий рабочий процесс генерации кода для функций, которые не являются объектными функциями моделей машинного обучения

    General code generation workflow

    Задайте функцию точки входа, которая вызывает функцию, которая поддерживает генерацию кода, сгенерируйте код C/C++ для функции точки входа при помощи codegen (MATLAB Coder), и затем проверяет сгенерированный код. Функция точки входа, также известная как или первичную функцию верхнего уровня, является функцией, которую вы задаете для генерации кода. Поскольку вы не можете вызвать функцию при использовании верхнего уровня codegen, необходимо задать функцию точки входа. Все функции в функции точки входа должны поддержать генерацию кода.

    Для получения дополнительной информации смотрите Общий Рабочий процесс Генерации кода.

  • Рабочий процесс генерации кода для объектной функции модели машинного обучения (включая predict, random, knnsearch, rangesearch, и пошаговое обучение возражает функциям),

    Code generation workflow for the object function of a machine learning model

    Сохраните обученную модель при помощи saveLearnerForCoder, и задайте функцию точки входа, которая загружает сохраненную модель при помощи loadLearnerForCoder и вызывает объектную функцию. Затем сгенерируйте код для функции точки входа при помощи codegen (MATLAB Coder), и проверяет сгенерированный код. Входные параметры функции точки входа не могут быть объекты модели регрессии или классификация. Поэтому необходимо работать вокруг этого ограничения при помощи saveLearnerForCoder и loadLearnerForCoder.

    Можно также сгенерировать код C/C++ с одинарной точностью для предсказания моделей машинного обучения для классификации и регрессии. Для генерации кода с одинарной точностью задайте аргумент пары "имя-значение" 'Datatype','single' как дополнительный вход к loadLearnerForCoder функция.

    Для получения дополнительной информации смотрите эти примеры

    Можно также сгенерировать фиксированную точку код C/C++ для предсказания модели машины опорных векторов (SVM), модели дерева принятия решения и ансамбля деревьев решений для классификации и регрессии. Этот тип генерации кода требует Fixed-Point Designer™.

    Fixed-point code generation workflow

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

    Для получения дополнительной информации смотрите Генерацию Фиксированной точки для Предсказания SVM.

  • Рабочий процесс генерации кода для predict и update функции древовидной модели, модели SVM, линейной модели или модели классификации выходных кодов с коррекцией ошибок (ECOC) мультикласса, использующей SVM или линейных бинарных учеников

    Code generation workflow for the predict and update functions with a coder configurer

    После обучения модель создайте кодер configurer при помощи learnerCoderConfigurer, сгенерируйте код при помощи generateCode, и затем проверьте сгенерированный код. Можно сконфигурировать опции генерации кода и задать атрибуты кодера параметров модели с помощью свойств объектов. После того, как вы переобучите модель с новыми данными или настройками, можно обновить параметры модели в сгенерированном коде C/C++, не имея необходимость регенерировать код. Эта функция уменьшает усилие, требуемое регенерировать, повторно развернуть, и повторно проверить код C/C++.

    Для получения дополнительной информации смотрите Генерацию кода для Предсказания и Обновления Используя Кодер Конфигурера.

Приложения генерации кода

Интегрировать предсказание модели машинного обучения в Simulink®, используйте блок MATLAB function или блоки Simulink в библиотеке Statistics and Machine Learning Toolbox. Для получения дополнительной информации смотрите эти примеры:

Генерация кода для функций Statistics and Machine Learning Toolbox также работает с другими тулбоксами, такими как Система object™ и Stateflow®, как описано в этих примерах:

Для большего количества приложений генерации кода смотрите эти примеры:

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

(MATLAB Coder) | | | |

Похожие темы

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