Создайте кодер configurer модели машинного обучения
После обучения модель машинного обучения создайте кодер configurer для модели при помощи learnerCoderConfigurer
. Используйте объектные функции и свойства configurer задать опции генерации кода и сгенерировать код C/C++ для predict
и update
функции модели машинного обучения. Генерация кода C/C++ требует MATLAB® Coder™.
Эта блок-схема показывает рабочий процесс генерации кода с помощью кодера configurer. Используйте learnerCoderConfigurer
для подсвеченного шага.
возвращает кодер configurer configurer
= learnerCoderConfigurer(Mdl
,X
)configurer
для модели Mdl
машинного обучения. Задайте данные о предикторе
X
для predict
функция Mdl
.
возвращает кодер configurer с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно задать количество выходных аргументов в configurer
= learnerCoderConfigurer(Mdl
,X
,Name,Value
)predict
функция, имя файла сгенерированного кода C/C++ и уровень многословия кодера configurer.
Обучите модель машинного обучения, и затем сгенерируйте код для predict
и update
функции модели при помощи кодера configurer.
Загрузите carsmall
набор данных и обучает модель регрессии машины опорных векторов (SVM).
load carsmall
X = [Horsepower,Weight];
Y = MPG;
Mdl = fitrsvm(X,Y);
Mdl
RegressionSVM
объект.
Создайте кодер configurer для RegressionSVM
модель при помощи learnerCoderConfigurer
. Задайте данные о предикторе X
. learnerCoderConfigurer
функционируйте использует вход X
сконфигурировать атрибуты кодера predict
входной параметр функции.
configurer = learnerCoderConfigurer(Mdl,X)
configurer = RegressionSVMCoderConfigurer with properties: Update Inputs: Alpha: [1x1 LearnerCoderInput] SupportVectors: [1x1 LearnerCoderInput] Scale: [1x1 LearnerCoderInput] Bias: [1x1 LearnerCoderInput] Predict Inputs: X: [1x1 LearnerCoderInput] Code Generation Parameters: NumOutputs: 1 OutputFileName: 'RegressionSVMModel' Properties, Methods
configurer
RegressionSVMCoderConfigurer
объект, который является кодером configurer RegressionSVM
объект.
Чтобы сгенерировать код C/C++, у вас должен быть доступ к компилятору C/C++, который сконфигурирован правильно. MATLAB Coder определяет местоположение и использует поддерживаемый, установленный компилятор. Можно использовать mex
-setup
просмотреть и изменить компилятор по умолчанию. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения (MATLAB).
Сгенерируйте код для predict
и update
функции модели регрессии SVM (Mdl
) с настройками по умолчанию.
generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'RegressionSVMModel.mat'
generateCode
функция завершает эти действия:
Сгенерируйте файлы MATLAB, требуемые сгенерировать код, включая две функции точки входа predict.m
и update.m
для predict
и update
функции Mdl
, соответственно.
Создайте MEX-функцию под названием RegressionSVMModel
для двух функций точки входа.
Создайте код для MEX-функции в codegen\mex\RegressionSVMModel
папка.
Скопируйте MEX-функцию в текущую папку.
Отобразите содержимое predict.m
, update.m
, и initialize.m
файлы при помощи type
функция.
type predict.m
function varargout = predict(X,varargin) %#codegen % Autogenerated by MATLAB, 23-Dec-2019 16:15:41 [varargout{1:nargout}] = initialize('predict',X,varargin{:}); end
type update.m
function update(varargin) %#codegen % Autogenerated by MATLAB, 23-Dec-2019 16:15:41 initialize('update',varargin{:}); end
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen % Autogenerated by MATLAB, 23-Dec-2019 16:15:41 coder.inline('always') persistent model if isempty(model) model = loadLearnerForCoder('RegressionSVMModel.mat'); end switch(command) case 'update' % Update struct fields: Alpha % SupportVectors % Scale % Bias model = update(model,varargin{:}); case 'predict' % Predict Inputs: X X = varargin{1}; if nargin == 2 [varargout{1:nargout}] = predict(model,X); else PVPairs = cell(1,nargin-2); for i = 1:nargin-2 PVPairs{1,i} = varargin{i+1}; end [varargout{1:nargout}] = predict(model,X,PVPairs{:}); end end end
Обучите модель SVM с помощью частичного набора данных и создайте кодер configurer для модели. Используйте свойства кодера configurer, чтобы задать атрибуты кодера параметров модели SVM. Используйте объектную функцию кодера configurer, чтобы сгенерировать код С, который предсказывает метки для новых данных о предикторе. Затем переобучите модель с помощью целого набора данных и параметров обновления в сгенерированном коде, не регенерируя код.
Обучите модель
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, любой плохо ('b'
) или хороший ('g'
). Обучите бинарную модель классификации SVM использование первых 50 наблюдений.
load ionosphere
Mdl = fitcsvm(X(1:50,:),Y(1:50));
Mdl
ClassificationSVM
объект.
Создайте кодер Конфигурера
Создайте кодер configurer для ClassificationSVM
модель при помощи learnerCoderConfigurer
. Задайте данные о предикторе X
. learnerCoderConfigurer
функционируйте использует вход X
сконфигурировать атрибуты кодера predict
входной параметр функции. Кроме того, определите номер выходных параметров к 2 так, чтобы сгенерированный код возвратил предсказанные метки и баллы.
configurer = learnerCoderConfigurer(Mdl,X(1:50,:),'NumOutputs',2);
configurer
ClassificationSVMCoderConfigurer
объект, который является кодером configurer ClassificationSVM
объект.
Задайте атрибуты кодера параметров
Задайте атрибуты кодера параметров модели классификации SVM так, чтобы можно было обновить параметры в сгенерированном коде после переквалификации модели. Этот пример задает атрибуты кодера данных о предикторе, которые вы хотите передать сгенерированному коду и атрибутам кодера векторов поддержки модели SVM.
Во-первых, задайте атрибуты кодера X
так, чтобы сгенерированный код принял любое количество наблюдений. Измените SizeVector
и VariableDimensions
атрибуты. SizeVector
атрибут задает верхнюю границу размера данных предиктора и VariableDimensions
атрибут задает, имеет ли каждая размерность данных о предикторе переменный размер или фиксированный размер.
configurer.X.SizeVector = [Inf 34]; configurer.X.VariableDimensions = [true false];
Размер первой размерности является количеством наблюдений. В этом случае код указывает, что верхней границей размера является Inf
и размер является переменным, означая тот X
может иметь любое количество наблюдений. Эта спецификация удобна, если вы не знаете количество наблюдений при генерации кода.
Размер второго измерения является количеством переменных предикторов. Это значение должно быть зафиксировано для модели машинного обучения. X
содержит 34 предиктора, таким образом, значение SizeVector
атрибут должен быть 34 и значение VariableDimensions
атрибутом должен быть false
.
Если вы переобучаете модель SVM с помощью новых данных или различных настроек, количество векторов поддержки может варьироваться. Поэтому задайте атрибуты кодера SupportVectors
так, чтобы можно было обновить векторы поддержки в сгенерированном коде.
configurer.SupportVectors.SizeVector = [250 34];
SizeVector attribute for Alpha has been modified to satisfy configuration constraints. SizeVector attribute for SupportVectorLabels has been modified to satisfy configuration constraints.
configurer.SupportVectors.VariableDimensions = [true false];
VariableDimensions attribute for Alpha has been modified to satisfy configuration constraints. VariableDimensions attribute for SupportVectorLabels has been modified to satisfy configuration constraints.
Если вы изменяете атрибуты кодера SupportVectors
, затем программное обеспечение изменяет атрибуты кодера Alpha
и SupportVectorLabels
удовлетворить ограничениям настройки. Если модификация атрибутов кодера одного параметра требует, чтобы последующие изменения к другим зависимым параметрам удовлетворили ограничениям настройки, то программное обеспечение изменяет атрибуты кодера зависимых параметров.
Сгенерируйте код
Чтобы сгенерировать код C/C++, у вас должен быть доступ к компилятору C/C++, который сконфигурирован правильно. MATLAB Coder определяет местоположение и использует поддерживаемый, установленный компилятор. Можно использовать mex
-setup
просмотреть и изменить компилятор по умолчанию. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения (MATLAB).
Используйте generateCode
сгенерировать код для predict
и update
функции модели классификации SVM (Mdl
) с настройками по умолчанию.
generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationSVMModel.mat'
generateCode
генерирует файлы MATLAB, требуемые сгенерировать код, включая две функции точки входа predict.m
и update.m
для predict
и update
функции Mdl
, соответственно. Затем generateCode
создает MEX-функцию под названием ClassificationSVMModel
для двух функций точки входа в codegen\mex\ClassificationSVMModel
папка и копии MEX-функция к текущей папке.
Проверьте сгенерированный код
Передайте некоторые данные о предикторе, чтобы проверить ли predict
функция Mdl
и predict
функция в MEX-функции возвращает те же метки. Чтобы вызвать функцию точки входа в MEX-функции, которая имеет больше чем одну точку входа, задайте имя функции как первый входной параметр.
[label,score] = predict(Mdl,X);
[label_mex,score_mex] = ClassificationSVMModel('predict',X);
Сравните label
и label_mex
при помощи isequal
.
isequal(label,label_mex)
ans = logical
1
isequal
возвращает логическую единицу (true
) если все входные параметры равны. Сравнение подтверждает что predict
функция Mdl
и predict
функция в MEX-функции возвращает те же метки.
score_mex
может включать различия в округлении по сравнению с score
. В этом случае сравните score_mex
и score
, разрешение маленького допуска.
find(abs(score-score_mex) > 1e-8)
ans = 0x1 empty double column vector
Сравнение подтверждает тот score
и score_mex
равны в допуске 1e–8
.
Переобучите параметры модели и обновления в сгенерированном коде
Переобучите модель с помощью целого набора данных.
retrainedMdl = fitcsvm(X,Y);
Извлеките параметры, чтобы обновиться при помощи validatedUpdateInputs
. Эта функция обнаруживает модифицированные параметры модели в retrainedMdl
и подтверждает, удовлетворяют ли модифицированные значения параметров атрибутам кодера параметров.
params = validatedUpdateInputs(configurer,retrainedMdl);
Обновите параметры в сгенерированном коде.
ClassificationSVMModel('update',params)
Проверьте сгенерированный код
Сравните выходные параметры от predict
функция retrainedMdl
и predict
функция в обновленной MEX-функции.
[label,score] = predict(retrainedMdl,X);
[label_mex,score_mex] = ClassificationSVMModel('predict',X);
isequal(label,label_mex)
ans = logical
1
find(abs(score-score_mex) > 1e-8)
ans = 0x1 empty double column vector
Сравнение подтверждает тот labels
и labels_mex
равны, и значения счета равны в допуске.
Mdl
— Модель машинного обученияМодель машинного обучения, заданная как объект полной или компактной модели, как дали в этой таблице поддерживаемых моделей.
Модель | Полная Объектная / Объектная Компактная модель | Учебная функция |
---|---|---|
Дерево выбора из двух альтернатив для классификации мультиклассов | ClassificationTree , CompactClassificationTree | fitctree |
SVM для и бинарной классификации одного класса | ClassificationSVM , CompactClassificationSVM | fitcsvm |
Линейная модель для бинарной классификации | ClassificationLinear | fitclinear |
Модель Multiclass для SVMs и линейные модели | ClassificationECOC , CompactClassificationECOC | fitcecoc |
Дерево выбора из двух альтернатив для регрессии | RegressionTree , CompactRegressionTree | fitrtree |
Регрессия машины опорных векторов (SVM) | RegressionSVM , CompactRegressionSVM | fitrsvm |
Линейная регрессия | RegressionLinear | fitrlinear |
Для указаний и ограничений по применению генерации кода модели машинного обучения смотрите раздел Code Generation страницы объекта модели.
X
— Данные о предиктореДанные о предикторе для predict
функция Mdl
, заданный, когда n-by-p числовая матрица, где n является количеством наблюдений и p, является количеством переменных предикторов. Вместо этого задавать X
как p-by-n матрица, где наблюдения соответствуют столбцам, необходимо установить 'ObservationsIn'
аргумент пары "имя-значение" 'columns'
. Эта опция доступна только для линейных моделей и моделей ECOC с линейными бинарными учениками.
predict
функция модели машинного обучения предсказывает метки для классификации и ответы для регрессии для данных данных о предикторе. После создания кодера configurer configurer
, можно использовать generateCode
функция, чтобы сгенерировать код C/C++ для predict
функция Mdl
. Сгенерированный код принимает данные о предикторе, которые имеют тот же размер и тип данных X
. Можно задать, имеет ли каждая размерность переменный размер или фиксированный размер после создания configurer
.
Например, если вы хотите сгенерировать код C/C++, который предсказывает, что метки с помощью 100 наблюдений с тремя переменными предикторами, затем задают X
как zeros(100,3)
. learnerCoderConfigurer
функционируйте использует только размер и тип данных X
, не его значения. Поэтому X
могут быть данные о предикторе или выражение MATLAB, которое представляет множество значений с определенным типом данных. Выход configurer
хранит размер и тип данных X
в X
свойство configurer
. Можно изменить размер и тип данных X
после создания configurer
. Например, измените количество наблюдений к 200 и типа данных к single
.
configurer.X.SizeVector = [200 3];
configurer.X.DataType = 'single';
Чтобы позволить сгенерированному коду C/C++ принимать данные о предикторе максимум с 100 наблюдениями, задайте X
как zeros(100,3)
и измените VariableDimensions
свойство.
configurer.X.VariableDimensions = [1 0];
указывает что первая размерность X
(количество наблюдений), имеет переменный размер и второе измерение X
(количество переменных предикторов), имеет фиксированный размер. Конкретное количество наблюдений, 100 в этом примере, становится максимальным позволенным количеством наблюдений в сгенерированном коде C/C++. Чтобы позволить любое количество наблюдений, задайте связанное как Inf
.configurer.X.SizeVector = [Inf 3];
Типы данных: single
| double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
configurer = learnerCoderConfigurer(Mdl,X,'NumOutputs',2,'OutputFileName','myModel')
определяет номер выходных параметров в predict
к 2 и задает имя файла 'myModel'
для сгенерированного кода C/C++.'NumOutputs'
— Количество выходных параметров в predict
Количество выходных аргументов в predict
функция модели Mdl
машинного обучения, заданный как разделенная запятой пара, состоящая из
'NumOutputs'
и положительный целочисленный n
.
Эта таблица приводит выходные параметры для predict
функция различных моделей. predict
на сгенерированном C/C++ код возвращает первый n
выходные параметры predict
функция в распоряжении, данном в Выходном столбце.
Модель | predict Функция модели | Выходные параметры |
---|---|---|
Дерево выбора из двух альтернатив для классификации мультиклассов | predict | label (предсказанные метки класса), score (апостериорные вероятности), node (числа узла для предсказанных классов), cnum (классификационные индексы предсказанных меток) |
SVM для и бинарной классификации одного класса | predict | label (предсказанные метки класса), score (баллы или апостериорные вероятности) |
Линейная модель для бинарной классификации | predict | Label (предсказанные метки класса), Score (баллы классификации) |
Модель Multiclass для SVMs и линейные модели | predict | label (предсказанные метки класса), NegLoss (отрицаемые средние бинарные потери), PBScore (баллы положительного класса) |
Дерево выбора из двух альтернатив для регрессии | predict | Yfit (предсказанные ответы), node (числа узла для прогнозов) |
Регрессия SVM | predict | yfit (предсказанные ответы) |
Линейная регрессия | predict | YHat (предсказанные ответы) |
Например, если вы задаете 'NumOutputs',1
для модели классификации SVM, затем predict
возвращает предсказанные метки класса в сгенерированном коде C/C++.
После создания кодера configurer configurer
, можно изменить количество выходных параметров при помощи записи через точку.
configurer.NumOutputs = 2;
'NumOutputs'
аргумент пары "имя-значение" эквивалентен '-nargout'
параметр компилятора codegen
. Эта опция задает количество выходных аргументов в функции точки входа генерации кода. Объектный функциональный generateCode
из кодера configurer генерирует две функции точки входа — predict.m
и update.m
для predict
и update
функции Mdl
, соответственно — и генерирует код C/C++ для двух функций точки входа. Заданное значение для 'NumOutputs'
соответствует количеству выходных аргументов в predict.m
.
Пример: 'NumOutputs',2
Типы данных: single
| double
'OutputFileName'
— Имя файла сгенерированного кода C/C++Mdl
имя объекта плюс 'Model'
(значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя файла сгенерированного кода C/C++, заданного как разделенная запятой пара, состоящая из 'OutputFileName'
и вектор символов или скаляр строки.
Объектный функциональный generateCode
из кодера configurer генерирует код C/C++ с помощью этого имени файла.
Имя файла не должно содержать пробелы, потому что они могут привести к отказам генерации кода в определенных настройках операционной системы. Кроме того, имя должно быть допустимым именем функции MATLAB.
Имя файла по умолчанию является именем объекта Mdl
сопровождаемый 'Model'
. Например, если Mdl
CompactClassificationSVM
или ClassificationSVM
объект, затем именем по умолчанию является 'ClassificationSVMModel'
.
После создания кодера configurer configurer
, можно изменить имя файла при помощи записи через точку.
configurer.OutputFileName = 'myModel';
Пример: 'OutputFileName','myModel'
Типы данных: char |
string
'Verbose'
— Уровень многословияtrue
(логическая единица) (значение по умолчанию) | false
(логический ноль)Уровень многословия, заданный как разделенная запятой пара, состоящая из 'Verbose'
и любой true
(логическая единица) или false
(логический ноль). Контроль уровня многословия отображение уведомлений в командной строке для кодера configurer configurer
.
Значение | Описание |
---|---|
true (логическая единица) | Программное обеспечение отображает уведомления, когда ваши изменения в атрибутах кодера параметра приводят к изменениям для других зависимых параметров. |
false (логический ноль) | Программное обеспечение не отображает уведомления. |
Чтобы позволить обновить параметры модели машинного обучения в сгенерированном коде, необходимо сконфигурировать атрибуты кодера параметров прежде, чем сгенерировать код. Атрибуты кодера параметров зависят друг от друга, таким образом, программное обеспечение хранит зависимости как ограничения настройки. Если вы изменяете атрибуты кодера параметра при помощи кодера configurer, и модификация требует, чтобы последующие изменения к другим зависимым параметрам удовлетворили ограничениям настройки, то программное обеспечение изменяет атрибуты кодера зависимых параметров. Уровень многословия определяет, отображает ли программное обеспечение уведомления для этих последующих изменений.
После создания кодера configurer configurer
, можно изменить уровень многословия при помощи записи через точку.
configurer.Verbose = false;
Пример: 'Verbose',false
Типы данных: логический
'ObservationsIn'
— Размерность наблюдения данных о предикторе'rows'
(значение по умолчанию) | 'columns'
Размерность наблюдения данных о предикторе, заданная как разделенная запятой пара, состоящая из 'ObservationsIn'
и любой 'rows'
или 'columns'
. Если вы устанавливаете 'ObservationsIn'
к 'columns'
, затем данные о предикторе X
должен быть ориентирован так, чтобы наблюдения соответствовали столбцам.
'columns'
опция доступна только для линейных моделей и моделей ECOC с линейными бинарными учениками.
Пример: 'ObservationsIn','columns'
configurer
— Кодер configurerКодер configurer модели машинного обучения, возвращенной как один из кодера configurer, возражает в этой таблице.
Модель | Объект кодера Конфигурера |
---|---|
Дерево выбора из двух альтернатив для классификации мультиклассов | ClassificationTreeCoderConfigurer |
SVM для и бинарной классификации одного класса | ClassificationSVMCoderConfigurer |
Линейная модель для бинарной классификации | ClassificationLinearCoderConfigurer |
Модель Multiclass для SVMs и линейные модели | ClassificationECOCCoderConfigurer |
Дерево выбора из двух альтернатив для регрессии | RegressionTreeCoderConfigurer |
Регрессия машины опорных векторов (SVM) | RegressionSVMCoderConfigurer |
Линейная регрессия | RegressionLinearCoderConfigurer |
Используйте объектные функции и свойства кодера configurer объект сконфигурировать опции генерации кода и сгенерировать код C/C++ для predict
и update
функции модели машинного обучения.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.