saveCompactModel

Сохраните объект модели в файле для генерации кода

Сгенерировать код C/C++ для объектных функций (predict, random, knnsearch или rangesearch) моделей машинного обучения, saveCompactModel использования, loadCompactModel и codegen. После обучения модель машинного обучения сохраните модель при помощи saveCompactModel. Задайте функцию точки входа, которая загружает модель при помощи loadCompactModel и вызывает объектную функцию. Затем используйте codegen или приложение MATLAB® Coder™, чтобы сгенерировать код C/C++. Генерация кода C/C++ требует MATLAB Coder.

Эта блок-схема показывает рабочий процесс генерации кода для объектных функций моделей машинного обучения. Используйте saveCompactModel для подсвеченного шага.

Синтаксис

saveCompactModel(Mdl,filename)

Описание

пример

saveCompactModel(Mdl,filename) готовит модель классификации, модель регрессии, или самый близкий соседний искатель (Mdl) для генерации кода путем сокращения его объема потребляемой памяти и затем сохранения ее в MATLAB отформатировал двоичный файл (MAT-файл) под названием filename. Можно передать filename loadCompactModel, чтобы восстановить объект модели из файла filename.

Примеры

свернуть все

После обучения модель машинного обучения сохраните модель при помощи saveCompactModel. Задайте функцию точки входа, которая загружает модель при помощи loadCompactModel и вызывает функцию predict обученной модели. Затем используйте codegen, чтобы сгенерировать код C/C++.

Этот пример кратко объясняет рабочий процесс генерации кода для прогноза моделей машинного обучения в командной строке. Для получения дополнительной информации смотрите Генерацию кода для Прогноза Модели Машинного обучения в Командной строке. Можно также сгенерировать код с помощью приложения MATLAB Coder. Смотрите Генерацию кода для Прогноза Модели Машинного обучения Используя Приложение MATLAB Coder для деталей. Чтобы узнать о генерации кода для нахождения самых близких соседей, использующих самую близкую соседнюю модель искателя, смотрите Генерацию кода для Самого близкого Соседнего Искателя.

Модель train

Загрузите ирисовый набор данных Фишера. Удалите все заметили, что setosa диафрагмирует данные так, чтобы X и Y содержали данные для двух классов только.

load fisheriris
inds = ~strcmp(species,'setosa');
X = meas(inds,:);
Y = species(inds);

Обучите модель классификации машин вектора поддержки (SVM) использование обработанного набора данных.

Mdl = fitcsvm(X,Y);

Mdl является моделью ClassificationSVM.

Сохраните модель

Сохраните модель классификации SVM в файл SVMIris.mat при помощи saveCompactModel.

saveCompactModel(Mdl,'SVMIris');

Задайте функцию точки входа

Задайте функцию с именем точки входа classifyIrises, который делает следующее:

  • Примите ирисовые цветочные измерения со столбцами, соответствующими meas, и возвратите предсказанные метки.

  • Загрузите обученную модель классификации SVM.

  • Предскажите метки с помощью загруженной модели классификации для ирисовых цветочных измерений.

type classifyIrises.m % Display contents of classifyIrises.m file
function label = classifyIrises(X) %#codegen
%CLASSIFYIRISES Classify iris species using SVM Model
%   CLASSIFYIRISES classifies the iris flower measurements in X using the
%   compact SVM model in the file SVMIris.mat, and then returns class
%   labels in label.
CompactMdl = loadCompactModel('SVMIris');
label = predict(CompactMdl,X);
end

Добавьте директиву компилятора %#codegen (или прагма) к функции точки входа после функциональной подписи, чтобы указать, что вы намереваетесь сгенерировать код для алгоритма MATLAB. Добавление этой директивы дает Анализатору кода MATLAB команду помогать вам диагностировать и зафиксировать нарушения, которые привели бы к ошибкам во время генерации кода.

Примечание: Если вы нажимаете кнопку, расположенную в верхнем правом разделе этого примера, и открываете этот пример в MATLAB®, затем MATLAB® открывает папку в качестве примера. Эта папка включает файл функции точки входа.

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

Сгенерируйте код для функции точки входа использование codegen. Поскольку C и C++ являются статически типизированными языками, необходимо определить свойства всех переменных в функции точки входа во время компиляции. Передайте X как значение опции -args, чтобы указать, что сгенерированный код должен принять вход, который имеет совпадающий тип данных и размер массивов как данные тренировки X. Если количество наблюдений неизвестно во время компиляции, можно также задать вход как переменный размер при помощи coder.typeof. Для получения дополнительной информации смотрите, Задают Аргументы Переменного Размера для Code Generation and Specify Properties Входных параметров функции Точки входа (MATLAB Coder).

codegen classifyIrises -args {X}

codegen генерирует MEX-функцию classifyIrises_mex с зависимым платформой расширением.

Проверьте сгенерированный код

Сравните метки, классифицированные с помощью predict, classifyIrises и classifyIrises_mex.

label1 = predict(Mdl,X);
label2 = classifyIrises(X);
label3 = classifyIrises_mex(X);
verify_label = isequal(label1,label2,label3)
verify_label = logical
   1

isequal возвращает (TRUE) логическую единицу, что означает, что все входные параметры равны. Метки классифицировали все три пути, то же самое.

Входные параметры

свернуть все

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

Имя файла, заданное как вектор символов или скаляр строки.

Если файл filename существует, то saveCompactModel перезаписывает файл.

Расширением файла filename должен быть .mat. Если filename не имеет никакого расширения, то saveCompactModel добавляет .mat.

Если filename не включает полный путь, то saveCompactModel сохранил файл к текущей папке.

Пример: 'SVMMdl'

Типы данных: char | string

Алгоритмы

saveCompactModel уменьшает объем потребляемой памяти классификации и моделей регрессии (Mdl) путем удаления свойств, которые не требуются для прогноза.

  • Для модели, которая имеет соответствующую компактную модель, функция saveCompactModel применяет соответствующую функцию compact к модели прежде, чем сохранить ее.

  • Для модели, которая не имеет соответствующей компактной модели, такой как ClassificationLinear, RegressionLinear, ExhaustiveSearcher и KDTreeSearcher, функция saveCompactModel сохраняет модель как есть.

  • Объект модели ClassificationKNN является полным объектом, который не имеет соответствующего компактного объекта. Для этой модели saveCompactModel сохраняет компактную версию, которая не включает свойства гипероптимизации параметров управления.

loadCompactModel загружает уменьшаемую версию, сохраненную saveCompactModel.

Альтернативная функциональность

  • Используйте кодер configurer созданный learnerCoderConfigurer для моделей, перечисленных в этой таблице.

    МодельОбъект кодера Конфигурера
    Регрессия машины вектора поддержки (SVM)RegressionSVMCoderConfigurer
    SVM для и бинарной классификации одного классаClassificationSVMCoderConfigurer
    Модель Multiclass для SVMsClassificationECOCCoderConfigurer

    После обучения модель машинного обучения создайте кодер configurer модели. Используйте объектные функции и свойства configurer сконфигурировать опции генерации кода и сгенерировать код для predict и функций update модели. Если вы генерируете код с помощью кодера configurer, можно обновить параметры модели в сгенерированном коде, не имея необходимость регенерировать код. Для получения дополнительной информации смотрите Генерацию кода для Прогноза и Обновления Используя Кодер Конфигурера.

Введенный в R2017b