loadCompactModel

Восстановите объект модели из сохраненной модели для генерации кода

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

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

Синтаксис

Mdl = loadCompactModel(filename)

Описание

пример

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

Примеры

свернуть все

После обучения модель машинного обучения сохраните модель при помощи 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) логическую единицу, что означает, что все входные параметры равны. Метки классифицировали все три пути, то же самое.

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

свернуть все

Имя MAT-файла, содержащего массив структур, представляющий объект модели, заданный как вектор символов. Необходимо создать файл filename с помощью saveCompactModel.

loadCompactModel восстанавливает модель, сохраненную в файле filename во время компиляции. Для поддерживаемых моделей смотрите входной параметр Mdl saveCompactModel.

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

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

Пример: 'Mdl'

Типы данных: 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, можно обновить параметры модели в сгенерированном коде, не имея необходимость регенерировать код. Для получения дополнительной информации смотрите Генерацию кода для Прогноза и Обновления Используя Кодер Конфигурера.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2017b