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

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, поддерживающих генерацию кода, см. в Function List (C/C + + Code Generation).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительные приложения генерации кода см. в следующих примерах:

См. также

| | | | (MATLAB CODER)

Похожие темы