Кодер configurer для модели мультикласса, использующей машины вектора поддержки (SVMs)
Объект ClassificationECOCCoderConfigurer
является кодером configurer модели классификации выходных кодов с коррекцией ошибок (ECOC) мультикласса (ClassificationECOC
или CompactClassificationECOC
), который использует бинарных учеников SVM.
Кодер configurer предлагает удобные функции, чтобы сконфигурировать опции генерации кода, сгенерировать код C/C++ и обновить параметры модели в сгенерированном коде.
Сконфигурируйте опции генерации кода и задайте атрибуты кодера параметров модели с помощью свойств объектов.
Сгенерируйте код C/C++ для predict
и функций update
модели ECOC при помощи generateCode
. Генерация кода C/C++ требует MATLAB® Coder™.
Обновите параметры модели в сгенерированном коде C/C++, не имея необходимость регенерировать код. Эта функция уменьшает усилие, требуемое регенерировать, повторно развернуть, и повторно проверить код C/C++, когда вы переобучаете модель с новыми данными или настройками. Прежде, чем обновить параметры модели, используйте validatedUpdateInputs
, чтобы подтвердить и извлечь параметры модели, чтобы обновить.
Эта блок-схема показывает рабочий процесс генерации кода с помощью кодера configurer.
Для указаний и ограничений по применению генерации кода мультикласса модель классификации ECOC смотрите разделы Генерации кода CompactClassificationECOC
, predict
и update
.
После обучения мультикласс модель классификации ECOC с бинарными учениками SVM при помощи fitcecoc
создайте кодер configurer для модели при помощи learnerCoderConfigurer
. Используйте свойства кодера configurer, чтобы задать атрибуты кодера аргументов predict
и update
. Затем используйте generateCode
, чтобы сгенерировать код C/C++ на основе заданных атрибутов кодера.
predict
Свойства, перечисленные в этом разделе, задают атрибуты кодера аргументов функции predict
в сгенерированном коде.
X
Атрибуты кодера данных о предиктореLearnerCoderInput
Атрибуты кодера данных о предикторе, чтобы передать сгенерированному коду C/C++ для функции predict
модели классификации ECOC, заданной как объект LearnerCoderInput
.
Когда вы создаете кодер configurer при помощи функции learnerCoderConfigurer
, входной параметр, X
определяет значения по умолчанию атрибутов кодера LearnerCoderInput
:
SizeVector
— Значение по умолчанию является размером массивов входа X
.
VariableDimensions
— Этим значением является [0,0]
(значение по умолчанию) или [1,0]
.
[0,0]
указывает, что размер массивов фиксируется, как задано в SizeVector
.
[1,0]
указывает, что массив имеет строки переменного размера и столбцы фиксированного размера. В этом случае первое значение SizeVector
является верхней границей для количества строк, и второе значение SizeVector
является количеством столбцов.
Тип данных
Этим значением является single
или double
. Тип данных по умолчанию зависит от типа данных входа X
.
Tunability
— Этим значением должен быть true
, означая, что predict
в сгенерированном коде C/C++ всегда включает данные о предикторе как вход.
Можно изменить атрибуты кодера при помощи записи через точку. Например, если вы хотите сгенерировать код C/C++, который принимает данные о предикторе с 100 наблюдениями за тремя переменными прогноза, задайте атрибуты кодера X
кодера configurer configurer
можно следующим образом:
configurer.X.SizeVector = [100 3];
configurer.X.DataType = 'double';
configurer.X.VariableDimensions = [0 0];
[0 0]
указывает, что первые и вторые измерения X
(количество наблюдений и количество переменных прогноза, соответственно) имеют фиксированные размеры.Чтобы позволить сгенерированному коду C/C++ принимать данные о предикторе максимум с 100 наблюдениями, задайте атрибуты кодера X
можно следующим образом:
configurer.X.SizeVector = [100 3];
configurer.X.DataType = 'double';
configurer.X.VariableDimensions = [1 0];
[1 0]
указывает, что первая размерность X
(количество наблюдений) имеет переменный размер, и второе измерение X
(количество переменных прогноза) имеет фиксированный размер. Конкретное количество наблюдений, 100 в этом примере, становится максимальным позволенным количеством наблюдений в сгенерированном коде C/C++. Чтобы позволить любое количество наблюдений, задайте связанное как Inf
.
BinaryLoss
— Атрибуты кодера бинарной функции потерь ученикаEnumeratedInput
Атрибуты кодера бинарной функции потерь ученика (аргумент пары "имя-значение" 'BinaryLoss'
predict
), заданный как объект EnumeratedInput
.
Значения атрибута по умолчанию объекта EnumeratedInput
основаны на значениях по умолчанию функции predict
:
Значение
Бинарная функция потерь ученика, заданная как один из векторов символов в BuiltInOptions
или вектора символов, определяющего пользовательское имя функции. Значением по умолчанию является 'hinge'
.
Чтобы использовать пользовательскую опцию, задайте пользовательскую функцию на пути поиска файлов MATLAB и задайте Value
как имя пользовательской функции.
SelectedOption
— Этим значением является 'Built-in'
(значение по умолчанию) или 'Custom'
. Программное обеспечение устанавливает SelectedOption
согласно Value
. Этот атрибут только для чтения.
BuiltInOptions
— Массив ячеек 'hamming'
, 'linear'
, 'quadratic'
, 'exponential'
, 'binodeviance'
, 'hinge'
и 'logit'
. Этот атрибут только для чтения.
IsConstant
— Этим значением должен быть true
.
Tunability
— Значением по умолчанию является false
. Если вы задаете другие значения атрибута, когда Tunability
является false
, программное обеспечение устанавливает Tunability
на true
.
Decoding
— Атрибуты кодера декодирования схемыEnumeratedInput
Атрибуты кодера схемы декодирования (аргумент пары "имя-значение" 'Decoding'
predict
), заданный как объект EnumeratedInput
.
Значения атрибута по умолчанию объекта EnumeratedInput
основаны на значениях по умолчанию функции predict
:
Значение схемы Value
— Decoding, заданное как 'lossweighted'
(значение по умолчанию), 'lossbased'
или объект LearnerCoderInput
.
Если вы устанавливаете IsConstant
на false
, то программное обеспечение изменяет Value
на объект LearnerCoderInput
с этими значениями атрибута кодера только для чтения:
SizeVector
— [1,12]
VariableDimensions
— [0,1]
Тип данных
'char'
Tunability
— 1
Вход в сгенерированном коде является переменным размером, настраиваемый вектор символов, который является или 'lossweighted'
или 'lossbased'
.
SelectedOption
— Этим значением является 'Built-in'
(значение по умолчанию) или 'NonConstant'
. Программное обеспечение устанавливает SelectedOption
согласно Value
. Этот атрибут только для чтения.
BuiltInOptions
— Массив ячеек 'lossweighted'
и 'lossbased'
. Этот атрибут только для чтения.
IsConstant
— Значением по умолчанию является true
. Если вы устанавливаете это значение к false
, программное обеспечение изменяет Value
на объект LearnerCoderInput
.
Tunability
— Значением по умолчанию является false
. Если вы задаете другие значения атрибута, когда Tunability
является false
, программное обеспечение устанавливает Tunability
на true
.
ObservationsIn
— Атрибуты кодера размерности наблюдения данных о предиктореEnumeratedInput
Атрибуты кодера размерности наблюдения данных о предикторе (аргумент пары "имя-значение" 'ObservationsIn'
predict
), заданный как объект EnumeratedInput
.
Значения атрибута по умолчанию объекта EnumeratedInput
основаны на значениях по умолчанию функции predict
:
Значение
Размерность наблюдения данных о предикторе, заданная как 'rows'
(значение по умолчанию) или 'columns'
. Этим значением должен быть 'rows'
для модели, которая использует бинарных учеников SVM.
SelectedOption
— Этим значением всегда является 'Built-in'
. Этот атрибут только для чтения.
BuiltInOptions
— Массив ячеек 'rows'
и 'columns'
. Этот атрибут только для чтения.
IsConstant
— Этим значением должен быть true
.
Tunability
— Значением по умолчанию является false
. Если вы задаете другие значения атрибута, когда Tunability
является false
, программное обеспечение устанавливает Tunability
на true
.
NumOutputs
Количество выходных параметров в predict
Количество выходных аргументов, чтобы возвратиться из сгенерированного кода C/C++ для функции predict
модели классификации ECOC, заданной как 1, 2, или 3.
Выходные аргументы predict
по порядку: label
(предсказанные метки класса), NegLoss
(отрицаемые средние бинарные потери), и PBScore
(очки положительного класса). predict
в сгенерированном коде C/C++ возвращает первый n
выходные параметры функции predict
, где n
является значением NumOutputs
.
После создания кодера configurer configurer
, можно задать количество выходных параметров при помощи записи через точку.
configurer.NumOutputs = 2;
Свойство NumOutputs
эквивалентно параметру компилятора '-nargout'
codegen
. Эта опция задает количество выходных аргументов в функции точки входа генерации кода. Объектный функциональный generateCode
генерирует две функции точки входа — predict.m
и update.m
для predict
и функций update
модели классификации ECOC, соответственно — и генерирует код C/C++ для двух функций точки входа. Заданное значение для свойства NumOutputs
соответствует количеству выходных аргументов в функции точки входа predict.m
.
Типы данных: double
update
Свойства, перечисленные в этом разделе, задают атрибуты кодера аргументов функции update
в сгенерированном коде. Функция update
берет обученные образцовые и новые параметры модели в качестве входных параметров и возвращает обновленную версию модели, которая содержит новые параметры. Чтобы позволить обновить параметры в сгенерированном коде, необходимо задать атрибуты кодера параметров прежде, чем сгенерировать код. Используйте объект LearnerCoderInput
задать атрибуты кодера каждого параметра. Значения атрибута по умолчанию основаны на параметрах модели во входном параметре Mdl
learnerCoderConfigurer
.
BinaryLearners
— Атрибуты кодера обученных бинарных учениковClassificationSVMCoderConfigurer
Атрибуты кодера обученных бинарных учеников (BinaryLearners
модели классификации ECOC), заданный как объект
.ClassificationSVMCoderConfigurer
Используйте аргументы update
объекта ClassificationSVMCoderConfigurer
задать атрибуты кодера всех бинарных учеников. Аргументами update
является Alpha
, Beta
, Bias
, Cost
, Mu
, Prior
, Scale
, Sigma
, SupportVectorLabels
и SupportVectors
. Для настройки BinaryLearners
программное обеспечение использует только свойства аргумента update
и игнорирует другие свойства ClassificationSVMCoderConfigurer
.
У каждого ученика может быть различное количество векторов поддержки. Поэтому программное обеспечение конфигурирует значения атрибута по умолчанию объектов LearnerCoderInput
для Alpha
, SupportVectorLabels
и SupportVectors
, чтобы разместить всех бинарных учеников, на основе входного параметра Mdl
learnerCoderConfigurer
.
SizeVector
Этим значением является [s,1]
для Alpha
и SupportVectorLabels
, где s
является наибольшим числом векторов поддержки в бинарных учениках.
Этим значением является [s,p]
для SupportVectors
, где p
является количеством предикторов.
VariableDimensions
— Этим значением является [0,0]
или [1,0]
. Если у каждого ученика есть то же количество векторов поддержки, значением по умолчанию является [0,0]
. В противном случае этим значением должен быть [1,0]
.
[0,0]
указывает, что размер массивов фиксируется, как задано в SizeVector
.
[1,0]
указывает, что массив имеет строки переменного размера и столбцы фиксированного размера. В этом случае первое значение SizeVector
является верхней границей для количества строк, и второе значение SizeVector
является количеством столбцов.
Тип данных
Этим значением является single
или double
. Тип данных по умолчанию сопоставим с типом данных данных тренировки, которые вы используете, чтобы обучить Mdl
.
Tunability
— Если вы обучаете модель с линейной функцией ядра, и модель хранит линейные коэффициенты предиктора (Beta
) без векторов поддержки и связанных значений, то этим значением должен быть false
. В противном случае этим значением должен быть true
.
Для получения дополнительной информации о других аргументах update
, смотрите аргументы update
ClassificationSVMCoderConfigurer
.
Cost
— Атрибуты кодера misclassification стоятсяLearnerCoderInput
Атрибуты кодера стоимости misclassification (Cost
модели классификации ECOC), заданный как объект LearnerCoderInput
.
Значения атрибута по умолчанию объекта LearnerCoderInput
основаны на входном параметре Mdl
learnerCoderConfigurer
:
SizeVector
— Этим значением должен быть [c,c]
, где c
является количеством классов.
VariableDimensions
— Этим значением должен быть [0,0]
, указав, что размер массивов фиксируется, как задано в SizeVector
.
Тип данных
Этим значением является single
или double
. Тип данных по умолчанию сопоставим с типом данных данных тренировки, которые вы используете, чтобы обучить Mdl
.
Tunability
— Значением по умолчанию является true
.
Prior
— Атрибуты кодера априорных вероятностейLearnerCoderInput
Атрибуты кодера априорных вероятностей (Prior
модели классификации ECOC), заданный как объект LearnerCoderInput
.
Значения атрибута по умолчанию объекта LearnerCoderInput
основаны на входном параметре Mdl
learnerCoderConfigurer
:
SizeVector
— Этим значением должен быть [1,c]
, где c
является количеством классов.
VariableDimensions
— Этим значением должен быть [0,0]
, указав, что размер массивов фиксируется, как задано в SizeVector
.
Тип данных
Этим значением является single
или double
. Тип данных по умолчанию сопоставим с типом данных данных тренировки, которые вы используете, чтобы обучить Mdl
.
Tunability
— Значением по умолчанию является true
.
OutputFileName
— Имя файла сгенерированного кода C/C++'ClassificationECOCModel'
(значение по умолчанию) | вектор символовИмя файла сгенерированного кода C/C++, заданного как вектор символов.
Объектный функциональный generateCode
ClassificationECOCCoderConfigurer
генерирует код C/C++ с помощью этого имени файла.
Имя файла не должно содержать пробелы, потому что они могут привести к отказам генерации кода в определенных настройках операционной системы. Кроме того, имя должно быть допустимым именем функции MATLAB.
После создания кодера configurer configurer
, можно задать имя файла при помощи записи через точку.
configurer.OutputFileName = 'myModel';
Типы данных: char
Verbose
— Уровень многословияtrue
(логическая единица) (значение по умолчанию) | false
(логический ноль)Уровень многословия, заданный как true
(логическая единица) или false
(логический ноль). Контроль уровня многословия отображение уведомлений в командной строке.
Значение | Описание |
---|---|
true (логическая единица) | Программное обеспечение отображает уведомления, когда ваши изменения в атрибутах кодера параметра приводят к изменениям для других зависимых параметров. |
false (логический ноль) | Программное обеспечение не отображает уведомления. |
Чтобы позволить обновить параметры модели машинного обучения в сгенерированном коде, необходимо сконфигурировать атрибуты кодера параметров прежде, чем сгенерировать код. Атрибуты кодера параметров зависят друг от друга, таким образом, программное обеспечение хранит зависимости как ограничения настройки. Если вы изменяете атрибуты кодера параметра при помощи кодера configurer, и модификация требует, чтобы последующие изменения к другим зависимым параметрам удовлетворили ограничения настройки, то программное обеспечение изменяет атрибуты кодера зависимых параметров. Уровень многословия определяет, отображает ли программное обеспечение уведомления для этих последующих изменений.
После создания кодера configurer configurer
, можно изменить уровень многословия при помощи записи через точку.
configurer.Verbose = false;
Типы данных: логический
Чтобы настроить рабочий процесс генерации кода, используйте функцию generateFiles
и следующие три свойства с codegen
, вместо того, чтобы использовать функцию generateCode
.
После генерации двух файлов функции точки входа (predict.m
и update.m
) при помощи функции generateFiles
, можно изменить эти файлы согласно рабочему процессу генерации кода. Например, можно изменить файл predict.m
, чтобы включать предварительную обработку данных, или можно добавить эти функции точки входа в другой проект генерации кода. Затем можно сгенерировать код C/C++ при помощи функции codegen
и аргументов codegen
, подходящих для измененных функций точки входа или проекта генерации кода. Используйте эти три свойства, описанные в этом разделе как отправная точка, чтобы установить аргументы codegen
.
CodeGenerationArguments
— codegen
Это свойство доступно только для чтения.
Аргументы codegen
, заданные как массив ячеек.
Это свойство позволяет вам настроить рабочий процесс генерации кода. Используйте функцию generateCode
, если вы не должны настраивать свой рабочий процесс.
Вместо того, чтобы использовать generateCode
с кодером configurer configurer
, можно сгенерировать код C/C++ можно следующим образом:
generateFiles(configurer) cgArgs = configurer.CodeGenerationArguments; codegen(cgArgs{:})
cgArgs
соответственно прежде, чем вызвать codegen
.
Если вы изменяете другие свойства configurer
, обновления программного обеспечения свойство CodeGenerationArguments
соответственно.
Типы данных: cell
PredictInputs
— Список настраиваемых входных параметров predict
Список настраиваемых входных параметров точки входа функционирует predict.m
для генерации кода, заданной как массив ячеек. Массив ячеек содержит другой массив ячеек, который включает объекты coder.PrimitiveType
и объекты coder.Constant
.
Если вы изменяете атрибуты кодера аргументов predict
, то обновления программного обеспечения соответствующие объекты соответственно. Если вы задаете атрибут Tunability
как false
, то программное обеспечение удаляет соответствующий объект из списка PredictInputs
.
Массив ячеек в PredictInputs
эквивалентен configurer.CodeGenerationArguments{6}
для кодера configurer configurer
.
Типы данных: cell
UpdateInputs
— Список настраиваемых входных параметров update
Список настраиваемых входных параметров точки входа функционирует update.m
для генерации кода, заданной как массив ячеек структуры. Структура включает объект coder.CellType
для BinaryLearners
и объекты coder.PrimitiveType
для Cost
и Prior
.
Если вы изменяете атрибуты кодера аргументов update
, то обновления программного обеспечения соответствующие объекты соответственно. Если вы задаете атрибут Tunability
как false
, то программное обеспечение удаляет соответствующий объект из списка UpdateInputs
.
Структура в UpdateInputs
эквивалентна configurer.CodeGenerationArguments{3}
для кодера configurer configurer
.
Типы данных: cell
generateCode | Сгенерируйте код C/C++ с помощью кодера configurer |
generateFiles | Сгенерируйте файлы MATLAB для генерации кода, использующей кодер configurer |
validatedUpdateInputs | Подтвердите и извлеките параметры модели машинного обучения, чтобы обновить |
Этот пример использование:
Обучите модель машинного обучения, и затем сгенерируйте код для predict
и функций update
модели при помощи кодера configurer.
Загрузите ирисовый набор данных Фишера и обучите мультикласс модель ECOC с помощью двоичных учеников SVM.
load fisheriris
X = meas;
Y = species;
Mdl = fitcecoc(X,Y);
Mdl
является объектом ClassificationECOC
.
Создайте кодер configurer для модели ClassificationECOC
при помощи learnerCoderConfigurer
. Задайте данные о предикторе X
. Функция learnerCoderConfigurer
использует вход X
, чтобы сконфигурировать атрибуты кодера входного параметра функции predict
.
configurer = learnerCoderConfigurer(Mdl,X)
configurer = ClassificationECOCCoderConfigurer with properties: Update Inputs: BinaryLearners: [1x1 ClassificationSVMCoderConfigurer] Prior: [1x1 LearnerCoderInput] Cost: [1x1 LearnerCoderInput] Predict Inputs: X: [1x1 LearnerCoderInput] Code Generation Parameters: NumOutputs: 1 OutputFileName: 'ClassificationECOCModel' Properties, Methods
configurer
является объектом ClassificationECOCCoderConfigurer
, который является кодером configurer объекта ClassificationECOC
.
Чтобы сгенерировать код 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.m
, update.m
и файлов initialize.m
при помощи функции type
.
type predict.m
function varargout = predict(X,varargin) %#codegen % Autogenerated by MATLAB, 22-Feb-2019 03:28:39 [varargout{1:nargout}] = initialize('predict',X,varargin{:}); end
type update.m
function update(varargin) %#codegen % Autogenerated by MATLAB, 22-Feb-2019 03:28:39 initialize('update',varargin{:}); end
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen % Autogenerated by MATLAB, 22-Feb-2019 03:28:39 coder.inline('always'); persistent model; if isempty(model) model = loadCompactModel('ClassificationECOCModel.mat'); end switch(command) case 'update' % Update struct fields: BinaryLearners % Prior % Cost 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
Этот пример использование:
Обучите модель выходных кодов с коррекцией ошибок (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
равны в допуске.
LearnerCoderInput
Кодер configurer использует объект LearnerCoderInput
задать атрибуты кодера входных параметров update
и predict
.
Объект LearnerCoderInput
имеет следующие атрибуты, чтобы задать свойства массива входного параметра в сгенерированном коде.
Название атрибута | Описание |
---|---|
SizeVector |
|
VariableDimensions | Индикатор, задающий, имеет ли каждая размерность массива переменный размер или фиксированный размер, заданный как
|
DataType | Тип данных массива |
Tunability | Индикатор, задающий или
Если вы задаете другие значения атрибута, когда |
После создания кодера configurer, можно изменить атрибуты кодера при помощи записи через точку. Например, задайте атрибуты кодера коэффициентов Alpha
в BinaryLearners
кодера configurer configurer
можно следующим образом:
configurer.BinaryLearners.Alpha.SizeVector = [100 1];
configurer.BinaryLearners.Alpha.VariableDimensions = [1 0];
configurer.BinaryLearners.Alpha.DataType = 'double';
Verbose
) как true
(значение по умолчанию), то программное обеспечение отображает уведомления, когда вы изменяете атрибуты кодера параметра модели машинного обучения, и модификация изменяет атрибуты кодера других зависимых параметров.EnumeratedInput
Кодер configurer использует объект EnumeratedInput
задать атрибуты кодера входных параметров predict
, которые имеют конечное множество доступных значений.
Объект EnumeratedInput
имеет следующие атрибуты, чтобы задать свойства массива входного параметра в сгенерированном коде.
Название атрибута | Описание |
---|---|
Value | Значение аргумента
Значение по умолчанию |
SelectedOption | Состояние выбранной опции, заданной как
Этот атрибут только для чтения. |
BuiltInOptions | Список доступных векторов символов для соответствующего аргумента Этот атрибут только для чтения. |
IsConstant | Индикатор, задающий, является ли значение массивов временем компиляции, постоянным ( Если вы устанавливаете это значение к |
Tunability | Индикатор, задающий, включает ли
Если вы задаете другие значения атрибута, когда |
После создания кодера configurer, можно изменить атрибуты кодера при помощи записи через точку. Например, задайте атрибуты кодера BinaryLoss
кодера configurer configurer
можно следующим образом:
configurer.BinaryLoss.Value = 'linear';
ClassificationECOC
| ClassificationSVMCoderConfigurer
| CompactClassificationECOC
| learnerCoderConfigurer
| predict
| update
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.