обновление

Обновите параметры модели для генерации кода

Сгенерируйте код C/C++ для predict и функций update модели машинного обучения при помощи кодера configurer объект. Создайте этот объект при помощи learnerCoderConfigurer и его объектного функционального generateCode. Затем можно использовать функцию update, чтобы обновить параметры модели в сгенерированном коде, не имея необходимость регенерировать код. Эта функция уменьшает усилие, требуемое регенерировать, повторно развернуть, и повторно проверить код C/C++, когда вы переобучаете модель с новыми данными или настройками.

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

Если вы не генерируете код, то вы не должны использовать функцию update. Когда вы переобучаете модель в MATLAB®, возвращенная модель уже включает измененные параметры.

Синтаксис

updatedMdl = update(Mdl,params)

Описание

пример

updatedMdl = update(Mdl,params) возвращает обновленную версию Mdl, который содержит новые параметры в params.

После переквалификации модели используйте функцию validatedUpdateInputs, чтобы обнаружить измененные параметры в переобученной модели и подтвердить, удовлетворяют ли измененные значения параметров атрибуты кодера параметров. Используйте вывод validatedUpdateInputs, подтвержденных параметров, как вход params, чтобы обновить параметры модели.

Примеры

свернуть все

Обучите модель машины вектора поддержки (SVM) использование частичного набора данных и создайте кодер configurer для модели. Используйте свойства кодера configurer, чтобы задать атрибуты кодера параметров модели SVM. Используйте объектную функцию кодера configurer, чтобы сгенерировать код С, который предсказывает ответы для новых данных о предикторе. Затем переобучите модель с помощью целого набора данных и обновите параметры в сгенерированном коде, не регенерируя код.

Модель train

Загрузите набор данных carsmall и обучите модель регрессии SVM использование первых 50 наблюдений.

load carsmall
X = [Horsepower,Weight];
Y = MPG;
Mdl = fitrsvm(X(1:50,:),Y(1:50));

Mdl является объектом RegressionSVM.

Создайте кодер Конфигурера

Создайте кодер configurer для модели RegressionSVM при помощи learnerCoderConfigurer. Задайте данные о предикторе X. Функция learnerCoderConfigurer использует вход X, чтобы сконфигурировать атрибуты кодера входного параметра функции predict.

configurer = learnerCoderConfigurer(Mdl,X(1:50,:));

configurer является объектом RegressionSVMCoderConfigurer, который является кодером configurer объекта RegressionSVM.

Задайте атрибуты кодера параметров

Задайте атрибуты кодера параметров модели регрессии SVM так, чтобы можно было обновить параметры в сгенерированном коде после переквалификации модели. Этот пример задает атрибуты кодера данных о предикторе, которые вы хотите передать сгенерированному коду и атрибутам кодера векторов поддержки модели регрессии SVM.

Во-первых, задайте атрибуты кодера X так, чтобы сгенерированный код принял любое количество наблюдений. Измените атрибуты VariableDimensions и SizeVector. Атрибут SizeVector задает верхнюю границу размера данных предиктора, и атрибут VariableDimensions задает, имеет ли каждая размерность данных о предикторе переменный размер или фиксированный размер.

configurer.X.SizeVector = [Inf 2];
configurer.X.VariableDimensions = [true false];

Размер первой размерности является количеством наблюдений. В этом случае код указывает, что верхней границей размера является Inf, и размер является переменным, означая, что X может иметь любое количество наблюдений. Эта спецификация удобна, если вы не знаете количество наблюдений при генерации кода.

Размер второго измерения является количеством переменных прогноза. Это значение должно быть зафиксировано для модели машинного обучения. X содержит два предиктора, таким образом, значение атрибута SizeVector должно быть два, и значением атрибута VariableDimensions должен быть false.

Если вы переобучаете модель SVM с помощью новых данных или различных настроек, количество векторов поддержки может отличаться. Поэтому задайте атрибуты кодера SupportVectors так, чтобы можно было обновить векторы поддержки в сгенерированном коде.

configurer.SupportVectors.SizeVector = [250 2];
SizeVector attribute for Alpha has been modified to satisfy configuration constraints.
configurer.SupportVectors.VariableDimensions = [true false];
VariableDimensions attribute for Alpha has been modified to satisfy configuration constraints.

Если вы изменяете атрибуты кодера SupportVectors, то программное обеспечение изменяет атрибуты кодера Alpha, чтобы удовлетворить ограничения настройки. Если модификация атрибутов кодера одного параметра требует, чтобы последующие изменения к другим зависимым параметрам удовлетворили ограничения настройки, то программное обеспечение изменяет атрибуты кодера зависимых параметров.

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

Чтобы сгенерировать код 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', 'RegressionSVMModel.mat'

generateCode генерирует файлы MATLAB, требуемые сгенерировать код, включая две функции точки входа predict.m и update.m для predict и функций update Mdl, соответственно. Затем generateCode создает MEX-функцию под названием RegressionSVMModel для двух функций точки входа в папке codegen\mex\RegressionSVMModel и копирует MEX-функцию в текущую папку.

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

Передайте некоторые данные о предикторе, чтобы проверить, возвращают ли функция predict Mdl и функция predict в MEX-функции те же предсказанные ответы. Чтобы вызвать функцию точки входа в MEX-функции, которая имеет больше чем одну точку входа, задайте имя функции как первый входной параметр.

yfit = predict(Mdl,X);
yfit_mex = RegressionSVMModel('predict',X);

yfit_mex может включать различия в округлении по сравнению с yfit. В этом случае сравните yfit и yfit_mex, позволив маленький допуск.

find(abs(yfit-yfit_mex) > 1e-6)
ans =

  0x1 empty double column vector

Сравнение подтверждает, что yfit и yfit_mex равны в допуске 1e–6.

Переобучите модель и обновите параметры в сгенерированном коде

Переобучите модель с помощью целого набора данных.

retrainedMdl = fitrsvm(X,Y);

Извлеките параметры, чтобы обновить при помощи validatedUpdateInputs. Эта функция обнаруживает измененные параметры модели в retrainedMdl и подтверждает, удовлетворяют ли измененные значения параметров атрибуты кодера параметров.

params = validatedUpdateInputs(configurer,retrainedMdl);

Обновите параметры в сгенерированном коде.

RegressionSVMModel('update',params)

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

Сравните выходные параметры от функции predict retrainedMdl и функции predict в обновленной MEX-функции.

yfit = predict(retrainedMdl,X);
yfit_mex = RegressionSVMModel('predict',X);
find(abs(yfit-yfit_mex) > 1e-6)
ans =

  0x1 empty double column vector

Сравнение подтверждает, что yfit и yfit_mex равны в допуске 1e-6.

Обучите модель SVM с помощью частичного набора данных и создайте кодер configurer для модели. Используйте свойства кодера configurer, чтобы задать атрибуты кодера параметров модели SVM. Используйте объектную функцию кодера configurer, чтобы сгенерировать код С, который предсказывает метки для новых данных о предикторе. Затем переобучите модель с помощью целого набора данных и обновите параметры в сгенерированном коде, не регенерируя код.

Модель train

Загрузите набор данных 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 так, чтобы сгенерированный код принял любое количество наблюдений. Измените атрибуты VariableDimensions и SizeVector. Атрибут 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 равны, и значения счета равны в допуске.

Обучите модель выходных кодов с коррекцией ошибок (ECOC), использующую двоичных учеников SVM, и создайте кодер configurer для модели. Используйте свойства кодера configurer, чтобы задать атрибуты кодера параметров модели ECOC. Используйте объектную функцию кодера configurer, чтобы сгенерировать код С, который предсказывает метки для новых данных о предикторе. Затем переобучите модель с помощью различных настроек и обновите параметры в сгенерированном коде, не регенерируя код.

Модель train

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;
Y = species;

Создайте бинарный шаблон ученика SVM, чтобы использовать Гауссову функцию ядра и стандартизировать данные о предикторе.

t = templateSVM('KernelFunction','gaussian','Standardize',true);

Обучите мультикласс модель ECOC с помощью шаблона t.

Mdl = fitcecoc(X,Y,'Learners',t);

Mdl является объектом ClassificationECOC.

Создайте кодер Конфигурера

Создайте кодер configurer для модели ClassificationECOC при помощи learnerCoderConfigurer. Задайте данные о предикторе X. Функция learnerCoderConfigurer использует вход X, чтобы сконфигурировать атрибуты кодера входного параметра функции predict. Кроме того, определите номер выходных параметров к 2 так, чтобы сгенерированный код возвратил сначала два выходных параметра функции predict, которые являются предсказанными метками и инвертировали средние бинарные потери.

configurer = learnerCoderConfigurer(Mdl,X,'NumOutputs',2)
configurer = 
  ClassificationECOCCoderConfigurer with properties:

   Update Inputs:
    BinaryLearners: [1×1 ClassificationSVMCoderConfigurer]
             Prior: [1×1 LearnerCoderInput]
              Cost: [1×1 LearnerCoderInput]

   Predict Inputs:
                 X: [1×1 LearnerCoderInput]

   Code Generation Parameters:
        NumOutputs: 2
    OutputFileName: 'ClassificationECOCModel'


  Properties, Methods

configurer является объектом ClassificationECOCCoderConfigurer, который является кодером configurer объекта ClassificationECOC. Отображение показывает настраиваемые входные параметры predict и update: X, BinaryLearners, Prior и Cost.

Задайте атрибуты кодера параметров

Задайте атрибуты кодера аргументов predict (данные о предикторе и аргументы пары "имя-значение" 'Decoding' и 'BinaryLoss') и аргументов update (векторы поддержки учеников SVM) так, чтобы можно было использовать эти аргументы в качестве входных параметров predict и update в сгенерированном коде.

Во-первых, задайте атрибуты кодера X так, чтобы сгенерированный код принял любое количество наблюдений. Измените атрибуты VariableDimensions и SizeVector. Атрибут SizeVector задает верхнюю границу размера данных предиктора, и атрибут VariableDimensions задает, имеет ли каждая размерность данных о предикторе переменный размер или фиксированный размер.

configurer.X.SizeVector = [Inf 4];
configurer.X.VariableDimensions = [true false];

Размер первой размерности является количеством наблюдений. В этом случае код указывает, что верхней границей размера является Inf, и размер является переменным, означая, что X может иметь любое количество наблюдений. Эта спецификация удобна, если вы не знаете количество наблюдений при генерации кода.

Размер второго измерения является количеством переменных прогноза. Это значение должно быть зафиксировано для модели машинного обучения. X содержит 4 предиктора, таким образом, второе значение атрибута SizeVector должно быть 4, и вторым значением атрибута VariableDimensions должен быть false.

Затем, измените атрибуты кодера BinaryLoss и Decoding, чтобы использовать аргументы пары "имя-значение" 'BinaryLoss' и 'Decoding' в сгенерированном коде. Отобразите атрибуты кодера BinaryLoss.

configurer.BinaryLoss
ans = 
  EnumeratedInput with properties:

             Value: 'hinge'
    SelectedOption: 'Built-in'
    BuiltInOptions: {'hamming'  'linear'  'quadratic'  'exponential'  'binodeviance'  'hinge'  'logit'}
        IsConstant: 1
        Tunability: 0

Чтобы использовать значение не по умолчанию в сгенерированном коде, необходимо задать значение прежде, чем сгенерировать код. Задайте атрибут Value BinaryLoss как 'exponential'.

configurer.BinaryLoss.Value = 'exponential';
configurer.BinaryLoss
ans = 
  EnumeratedInput with properties:

             Value: 'exponential'
    SelectedOption: 'Built-in'
    BuiltInOptions: {'hamming'  'linear'  'quadratic'  'exponential'  'binodeviance'  'hinge'  'logit'}
        IsConstant: 1
        Tunability: 1

Если вы изменяете значения атрибута, когда Tunability является false (логический ноль), программное обеспечение устанавливает Tunability на true (логическая единица).

Отобразите атрибуты кодера Decoding.

configurer.Decoding
ans = 
  EnumeratedInput with properties:

             Value: 'lossweighted'
    SelectedOption: 'Built-in'
    BuiltInOptions: {'lossweighted'  'lossbased'}
        IsConstant: 1
        Tunability: 0

Задайте атрибут IsConstant Decoding как false так, чтобы можно было использовать все доступные значения в BuiltInOptions в сгенерированном коде.

configurer.Decoding.IsConstant = false;
configurer.Decoding
ans = 
  EnumeratedInput with properties:

             Value: [1×1 LearnerCoderInput]
    SelectedOption: 'NonConstant'
    BuiltInOptions: {'lossweighted'  'lossbased'}
        IsConstant: 0
        Tunability: 1

Программное обеспечение изменяет атрибут Value Decoding к объекту LearnerCoderInput так, чтобы можно было использовать и 'lossweighted' и 'lossbased' как значение 'Decoding'. Кроме того, программное обеспечение устанавливает SelectedOption на 'NonConstant' и Tunability к true.

Наконец, измените атрибуты кодера SupportVectors в BinaryLearners. Отобразите атрибуты кодера SupportVectors.

configurer.BinaryLearners.SupportVectors
ans = 
  LearnerCoderInput with properties:

            SizeVector: [54 4]
    VariableDimensions: [1 0]
              DataType: 'double'
            Tunability: 1

Значением по умолчанию VariableDimensions является [true false], потому что у каждого ученика есть различное количество векторов поддержки. Если вы переобучаете модель ECOC с помощью новых данных или различных настроек, количество векторов поддержки в учениках SVM может отличаться. Поэтому увеличьте верхнюю границу количества векторов поддержки.

configurer.BinaryLearners.SupportVectors.SizeVector = [150 4];
SizeVector attribute for Alpha has been modified to satisfy configuration constraints.
SizeVector attribute for SupportVectorLabels has been modified to satisfy configuration constraints.

Если вы изменяете атрибуты кодера SupportVectors, то программное обеспечение изменяет атрибуты кодера Alpha и SupportVectorLabels, чтобы удовлетворить ограничения настройки. Если модификация атрибутов кодера одного параметра требует, чтобы последующие изменения к другим зависимым параметрам удовлетворили ограничения настройки, то программное обеспечение изменяет атрибуты кодера зависимых параметров.

Отобразите кодер configurer.

configurer
configurer = 
  ClassificationECOCCoderConfigurer with properties:

   Update Inputs:
    BinaryLearners: [1×1 ClassificationSVMCoderConfigurer]
             Prior: [1×1 LearnerCoderInput]
              Cost: [1×1 LearnerCoderInput]

   Predict Inputs:
                 X: [1×1 LearnerCoderInput]
        BinaryLoss: [1×1 EnumeratedInput]
          Decoding: [1×1 EnumeratedInput]

   Code Generation Parameters:
        NumOutputs: 2
    OutputFileName: 'ClassificationECOCModel'


  Properties, Methods

Отображение теперь включает BinaryLoss и Decoding также.

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

Чтобы сгенерировать код C/C++, у вас должен быть доступ к компилятору C/C++, который сконфигурирован правильно. MATLAB Coder определяет местоположение и использует поддерживаемый, установленный компилятор. Можно использовать mex -setup, чтобы просмотреть и изменить компилятор по умолчанию. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения (MATLAB).

Сгенерируйте код для predict и функций update модели классификации ECOC (Mdl) с настройками по умолчанию.

generateCode(configurer)
generateCode creates these files in output folder:
'initialize.m', 'predict.m', 'update.m', 'ClassificationECOCModel.mat'

Функция generateCode завершает эти действия:

  • Сгенерируйте файлы MATLAB, требуемые сгенерировать код, включая две функции точки входа predict.m и update.m для predict и функций update Mdl, соответственно.

  • Создайте MEX-функцию под названием ClassificationECOCModel для двух функций точки входа.

  • Создайте код для MEX-функции в папке codegen\mex\ClassificationECOCModel.

  • Скопируйте MEX-функцию в текущую папку.

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

Передайте некоторые данные о предикторе, чтобы проверить, возвращают ли функция predict Mdl и функция predict в MEX-функции те же метки. Чтобы вызвать функцию точки входа в MEX-функции, которая имеет больше чем одну точку входа, задайте имя функции как первый входной параметр. Поскольку вы задали 'Decoding' как настраиваемый входной параметр путем изменения атрибута IsConstant прежде, чем сгенерировать код, также необходимо задать его в вызове MEX-функции, даже при том, что 'lossweighted' является значением по умолчанию 'Decoding'.

[label,NegLoss] = predict(Mdl,X,'BinaryLoss','exponential');
[label_mex,NegLoss_mex] = ClassificationECOCModel('predict',X,'BinaryLoss','exponential','Decoding','lossweighted');

Сравните label с label_mex при помощи isequal.

isequal(label,label_mex)
ans = logical
   1

isequal возвращает логическую единицу (true), если все входные параметры равны. Сравнение подтверждает, что функция predict Mdl и функция predict в MEX-функции возвращают те же метки.

NegLoss_mex может включать различия в округлении по сравнению с NegLoss. В этом случае сравните NegLoss_mex с NegLoss, позволив маленький допуск.

find(abs(NegLoss-NegLoss_mex) > 1e-8)
ans =

  0×1 empty double column vector

Сравнение подтверждает, что NegLoss и NegLoss_mex равны в допуске 1e–8.

Переобучите модель и обновите параметры в сгенерированном коде

Переобучите модель с помощью различной установки. Задайте 'KernelScale' как 'auto' так, чтобы программное обеспечение выбрало соответствующий масштабный коэффициент с помощью эвристической процедуры.

t_new = templateSVM('KernelFunction','gaussian','Standardize',true,'KernelScale','auto');
retrainedMdl = fitcecoc(X,Y,'Learners',t_new);

Извлеките параметры, чтобы обновить при помощи validatedUpdateInputs. Эта функция обнаруживает измененные параметры модели в retrainedMdl и подтверждает, удовлетворяют ли измененные значения параметров атрибуты кодера параметров.

params = validatedUpdateInputs(configurer,retrainedMdl);

Обновите параметры в сгенерированном коде.

ClassificationECOCModel('update',params)

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

Сравните выходные параметры от функции predict retrainedMdl к выходным параметрам от функции predict в обновленной MEX-функции.

[label,NegLoss] = predict(retrainedMdl,X,'BinaryLoss','exponential','Decoding','lossbased');
[label_mex,NegLoss_mex] = ClassificationECOCModel('predict',X,'BinaryLoss','exponential','Decoding','lossbased');
isequal(label,label_mex)
ans = logical
   1

find(abs(NegLoss-NegLoss_mex) > 1e-8)
ans =

  0×1 empty double column vector

Сравнение подтверждает, что labels и labels_mex равны, и NegLoss и NegLoss_mex равны в допуске.

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

свернуть все

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

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

Для указаний и ограничений по применению генерации кода модели машинного обучения смотрите раздел Code Generation страницы объекта модели.

Параметры, чтобы обновить в модели машинного обучения, заданной как структура с полем для каждого параметра, чтобы обновить.

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

МодельПараметры, чтобы обновить
Регрессия SVM
  • Если вы обучаете модель регрессии SVM (Mdl) с линейной функцией ядра и отбрасываете векторы поддержки при помощи discardSupportVectors, то params может включать Beta, Bias, Mu, Scale (масштабный коэффициент ядра в KernelParameters), и Sigma.

  • В противном случае params может включать Alpha, Bias, Mu, Scale (масштабный коэффициент ядра в KernelParameters), Sigma и SupportVectors.

SVM для и бинарной классификации одного класса
  • Если Mdl является моделью классификации SVM одного класса, то params не может включать Cost или Prior.

Модель Multiclass для SVMsBinaryLearners, Cost, Prior

Можно создать params при помощи функции validatedUpdateInputs. Эта функция обнаруживает измененные параметры в переобученной модели, подтверждает, удовлетворяют ли измененные значения параметров атрибуты кодера параметров, и возвращает параметры, чтобы обновить как структура.

Выходные аргументы

свернуть все

Обновленная модель машинного обучения, возвращенная как объект компактной модели, который является тем же типом объекта как Mdl. Вывод updatedMdl является обновленной версией входа Mdl, который содержит новые параметры в params.

Советы

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

Введенный в R2018b