Создание конфигуратора кодера модели машинного обучения
После обучения модели машинного обучения создайте конфигуратор кодера для модели с помощью learnerCoderConfigurer. Используйте функции объекта и свойства конфигуратора, чтобы указать опции генерации кода и создать код C/C + + для predict и update функции модели машинного обучения. Для создания кода C/C + + требуется Coder™ MATLAB ®.
На этой блок-схеме показан рабочий процесс создания кода с использованием конфигуратора кодера. Использовать learnerCoderConfigurer для выделенного шага.

возвращает конфигуратор кодера configurer = learnerCoderConfigurer(Mdl,X)configurer для модели машинного обучения Mdl. Укажите данные предиктора X для predict функция Mdl.
возвращает конфигуратор кодера с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение. Например, можно указать количество выходных аргументов в configurer = learnerCoderConfigurer(Mdl,X,Name,Value)predict имя файла сгенерированного кода C/C + + и уровень детализации конфигуратора кодера.
В этом примере используются:
Обучение модели машинного обучения, а затем создание кода для predict и update функции модели с помощью конфигуратора кодера.
Загрузить carsmall набор данных и тренировка регрессионной модели машины опорных векторов (SVM).
load carsmall
X = [Horsepower,Weight];
Y = MPG;
Mdl = fitrsvm(X,Y);Mdl является RegressionSVM объект.
Создание конфигуратора кодера для 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 объект, который является конфигуратором кодера RegressionSVM объект.
Для создания кода C/C + + необходимо иметь доступ к компилятору C/C + +, который настроен правильно. MATLAB Coder находит и использует поддерживаемый установленный компилятор. Вы можете использоватьmex -setup для просмотра и изменения компилятора по умолчанию. Дополнительные сведения см. в разделе Изменение компилятора по умолчанию.
Создание кода для predict и update функции регрессионной модели SVM (Mdl) с настройками по умолчанию.
generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'RegressionSVMModel.mat' Code generation successful.
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.mfunction varargout = predict(X,varargin) %#codegen
% Autogenerated by MATLAB, 23-Apr-2021 12:43:25
[varargout{1:nargout}] = initialize('predict',X,varargin{:});
end
type update.mfunction update(varargin) %#codegen
% Autogenerated by MATLAB, 23-Apr-2021 12:43:25
initialize('update',varargin{:});
end
type initialize.mfunction [varargout] = initialize(command,varargin) %#codegen
% Autogenerated by MATLAB, 23-Apr-2021 12:43:25
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 с использованием частичного набора данных и создание конфигуратора кодера для модели. Используйте свойства конфигуратора кодера для указания атрибутов кодера параметров модели SVM. Используйте функцию объекта конфигуратора кодера для генерации кода C, который предсказывает метки для новых данных предиктора. Затем переобучите модель, используя весь набор данных, и обновите параметры в сгенерированном коде без регенерации кода.
Модель поезда
Загрузить ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный отклик для радарных возвращений, либо плохой ('b') или хорошо ('g'). Тренировка двоичной модели классификации SVM с использованием первых 50 наблюдений.
load ionosphere
Mdl = fitcsvm(X(1:50,:),Y(1:50));Mdl является ClassificationSVM объект.
Создать конфигуратор кодера
Создание конфигуратора кодера для ClassificationSVM модель с использованием learnerCoderConfigurer. Укажите данные предиктора X. learnerCoderConfigurer функция использует вход X для конфигурирования атрибутов кодера predict ввод функции. Кроме того, установите число выходов равным 2, чтобы сгенерированный код возвращал предсказанные метки и оценки.
configurer = learnerCoderConfigurer(Mdl,X(1:50,:),'NumOutputs',2);configurer является ClassificationSVMCoderConfigurer объект, который является конфигуратором кодера 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 для просмотра и изменения компилятора по умолчанию. Дополнительные сведения см. в разделе Изменение компилятора по умолчанию.
Использовать generateCode для создания кода для predict и update функции модели классификации SVM (Mdl) с настройками по умолчанию.
generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationSVMModel.mat' Code generation successful.
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 возвращает логический 1 (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 |
| Многоклассовая модель для SVM и линейных моделей | ClassificationECOC, CompactClassificationECOC | fitcecoc |
| Двоичное дерево решений для регрессии | RegressionTree, CompactRegressionTree | fitrtree |
| Регрессия вектора поддержки (SVM) | RegressionSVM, CompactRegressionSVM | fitrsvm |
| Линейная регрессия | RegressionLinear | fitrlinear |
Примечания по использованию генерации кода и ограничения модели машинного обучения см. в разделе Создание кода на странице объекта модели.
X - Данные предиктораДанные предиктора для predict функция Mdl, заданный как n-за-p числовая матрица, где n - количество наблюдений, а p - число переменных предиктора. Чтобы вместо этого указать X в качестве матрицы p-by-n, где наблюдения соответствуют столбцам, необходимо установить 'ObservationsIn' аргумент пары имя-значение для 'columns'. Эта опция доступна только для линейных моделей и моделей ECOC с линейными двоичными учениками.
predict функция модели машинного обучения предсказывает метки для классификации и ответы для регрессии для данных данного предиктора. После создания конфигуратора кодера 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];
[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 (классификационные баллы) |
| Многоклассовая модель для SVM и линейных моделей | predict | label (прогнозируемые метки класса), NegLoss (сведенные на нет средние двоичные потери), PBScore(положительные оценки класса) |
| Двоичное дерево решений для регрессии | predict | Yfit (прогнозируемые ответы), node (номера узлов для прогнозов) |
| Регрессия SVM | predict | yfit (прогнозируемые ответы) |
| Линейная регрессия | predict | YHat (прогнозируемые ответы) |
Например, при указании 'NumOutputs',1 для модели классификации SVM, то predict возвращает прогнозируемые метки класса в сгенерированном коде C/C + +.
После создания конфигуратора кодера configurerможно изменить количество выходов с помощью точечной нотации.
configurer.NumOutputs = 2;
'NumOutputs' аргумент пары имя-значение эквивалентен '-nargout' параметр компилятора codegen (Кодер MATLAB). Этот параметр определяет количество выходных аргументов в функции начального значения генерации кода. Функция объекта generateCode конфигуратора кодера генерирует две функции точки входа -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 конфигуратора кодера генерирует код C/C + +, используя это имя файла.
Имя файла не должно содержать пробелов, поскольку они могут привести к сбоям при создании кода в определенных конфигурациях операционной системы. Кроме того, имя должно быть допустимым именем функции MATLAB.
Имя файла по умолчанию - это имя объекта Mdl за которым следует 'Model'. Например, если Mdl является CompactClassificationSVM или ClassificationSVM объект, то имя по умолчанию: 'ClassificationSVMModel'.
После создания конфигуратора кодера configurer, можно изменить имя файла с помощью точечной нотации.
configurer.OutputFileName = 'myModel';Пример: 'OutputFileName','myModel'
Типы данных: char | string
'Verbose' - Уровень детализацииtrue (логический 1) (по умолчанию) | false (логический 0)Уровень детализации, указанный как разделенная запятыми пара, состоящая из 'Verbose' и либо true (логический 1) или false (логический 0). Уровень детализации управляет отображением уведомлений в командной строке конфигуратора кодера configurer.
| Стоимость | Описание |
|---|---|
true (логический 1) | Программа отображает уведомления, когда изменения атрибутов кодера параметра приводят к изменениям других зависимых параметров. |
false (логический 0) | Программа не отображает уведомления. |
Чтобы включить обновление параметров модели машинного обучения в сгенерированном коде, необходимо настроить атрибуты кодера параметров перед созданием кода. Атрибуты кодера параметров зависят друг от друга, поэтому программное обеспечение сохраняет зависимости как ограничения конфигурации. При изменении атрибутов кодера параметра с помощью конфигуратора кодера и необходимости последующих изменений других зависимых параметров в соответствии с ограничениями конфигурации программа изменяет атрибуты кодера зависимых параметров. Уровень детализации определяет, отображает ли программное обеспечение сообщения уведомления для этих последующих изменений.
После создания конфигуратора кодера configurer, можно изменить уровень детализации с помощью точечной нотации.
configurer.Verbose = false;
Пример: 'Verbose',false
Типы данных: logical
'ObservationsIn' - Измерение наблюдения данных предиктора'rows' (по умолчанию) | 'columns'Измерение наблюдения данных предиктора, указанное как пара, разделенная запятыми, состоящая из 'ObservationsIn' и либо 'rows' или 'columns'. Если установить 'ObservationsIn' кому 'columns', то данные предиктора X должны быть ориентированы таким образом, чтобы наблюдения соответствовали столбцам.
Примечание
'columns' опция доступна только для линейных моделей и моделей ECOC с линейными двоичными учениками.
Пример: 'ObservationsIn','columns'
configurer - Конфигуратор кодераКонфигуратор кодера модели машинного обучения, возвращенный в качестве одного из объектов конфигуратора кодера в этой таблице.
| Модель | Объект конфигуратора кодера |
|---|---|
| Двоичное дерево решений для многоклассовой классификации | ClassificationTreeCoderConfigurer |
| SVM для одноклассной и двоичной классификации | ClassificationSVMCoderConfigurer |
| Линейная модель для двоичной классификации | ClassificationLinearCoderConfigurer |
| Многоклассовая модель для SVM и линейных моделей | ClassificationECOCCoderConfigurer |
| Двоичное дерево решений для регрессии | RegressionTreeCoderConfigurer |
| Регрессия вектора поддержки (SVM) | RegressionSVMCoderConfigurer |
| Линейная регрессия | RegressionLinearCoderConfigurer |
Используйте функции объекта и свойства объекта конфигуратора кодера для настройки параметров генерации кода и создания кода C/C + + для predict и update функции модели машинного обучения.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.