Сгенерируйте функцию, которая задает типы данных для генерации фиксированной точки
Сгенерировать фиксированную точку код 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) | fi
(Fixed-Point Designer) | showInstrumentationResults
(Fixed-Point Designer) | codegen
(MATLAB Coder)