Сгенерируйте функцию, которая задает типы данных для генерации фиксированной точки
Сгенерировать фиксированную точку код C/C++ для predict функция модели машинного обучения, использовать generateLearnerDataTypeFcn, saveLearnerForCoder, loadLearnerForCoder, и codegen (MATLAB Coder).
После обучения модель машинного обучения сохраните использование модели saveLearnerForCoder.
Создайте структуру, которая задает типы данных с фиксированной точкой при помощи функции, сгенерированной от generateLearnerDataTypeFcn.
Задайте функцию точки входа, которая загружает модель при помощи обоих loadLearnerForCoder и структура, и затем вызывает predict функция.
Сгенерируйте использование кода codegen, и затем проверьте сгенерированный код.
generateLearnerDataTypeFcn функция требует Fixed-Point Designer™, и генерирующий фиксированную точку, код C/C++ требует MATLAB® Coder™ и Fixed-Point Designer.
Эта блок-схема показывает рабочий процесс генерации фиксированной точки для predict функция модели машинного обучения. Использование generateLearnerDataTypeFcn для подсвеченного шага.
![]()
generateLearnerDataTypeFcn( генерирует функцию типа данных, которая задает типы данных с фиксированной точкой для переменных, требуемых сгенерировать фиксированную точку код C/C++ для предсказания модели машинного обучения. filename,X)filename хранит модель машинного обучения и X содержит данные о предикторе для predict функция модели.
Используйте сгенерированную функцию, чтобы создать структуру, которая задает типы данных с фиксированной точкой. Затем используйте структуру в качестве входного параметра T из loadLearnerForCoder.
generateLearnerDataTypeFcn( задает дополнительные опции при помощи одного или нескольких аргументов пары "имя-значение". Например, можно задать filename,X,Name,Value)'WordLength',32 использовать 32-битный размер слова для типов данных с фиксированной точкой.
Чтобы улучшить точность сгенерированной фиксированной точки, можно настроить типы данных с фиксированной точкой. Измените типы данных с фиксированной точкой путем обновления функции типа данных (myMdl_datatype) и создание новой структуры, и затем регенерирует код с помощью новой структуры. Можно обновить myMdl_datatype функция одним из двух способов:
Регенерируйте myMdl_datatype функция при помощи generateLearnerDataTypeFcn и его аргументы пары "имя-значение".
Увеличьте размер слова при помощи 'WordLength' аргумент пары "имя-значение".
Уменьшите запас прочности при помощи 'PercentSafetyMargin' аргумент пары "имя-значение".
Если вы увеличиваете размер слова или уменьшаете запас прочности, программное обеспечение может предложить более долгую дробную длину, и поэтому, улучшить точность сгенерированного кода на основе набора определенных данных.
Вручную измените типы данных с фиксированной точкой в файле функции (myMdl_datatype.m). Для каждой переменной можно настроить размер слова и фракционировать длину и задать математические настройки фиксированной точки с помощью a fimath Объект (Fixed-Point Designer).
В сгенерированной фиксированной точке большое количество операций или большого переменного диапазона может привести к потере точности, сравненной с точностью соответствующего кода с плавающей точкой. Когда обучение модель SVM, помните о следующих советах, чтобы избежать потери точности в сгенерированной фиксированной точке:
Стандартизация данных ('Standardize') — Чтобы избежать переполнения в значениях свойств модели векторов поддержки в модели SVM, можно стандартизировать данные о предикторе. Вместо того, чтобы использовать 'Standardize' аргумент пары "имя-значение", когда обучение модель, стандартизируйте данные о предикторе прежде, чем передать данные подходящей функции и predict функционируйте так, чтобы фиксированная точка не включала операции для стандартизации.
Функция ядра ('KernelFunction') — Используя Гауссово ядро или линейное ядро предпочтительно для использования полиномиального ядра. Полиномиальное ядро требует более высокой вычислительной сложности, чем другие ядра, и выход полиномиальной функции ядра неограничен.
Шкала ядра ('KernelScale') — Используя шкалу ядра требует дополнительных операций если значение 'KernelScale' не 1.
Предсказание проблемы классификации одного класса может иметь потерю точности, если предсказанные значения баллов класса имеют большой спектр.
loadLearnerForCoder | saveLearnerForCoder | buildInstrumentedMex (Fixed-Point Designer) | showInstrumentationResults (Fixed-Point Designer) | codegen (MATLAB Coder) | fi (Fixed-Point Designer)