Кодер configurer для модели мультикласса использование бинарных учеников
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
.
Если Value
атрибут ObservationsIn
свойство для ClassificationECOCCoderConfigurer
'rows'
, затем этот SizeVector
значением является [n p]
, где n
соответствует количеству наблюдений и p
соответствует количеству предикторов.
Если Value
атрибут ObservationsIn
свойство для ClassificationECOCCoderConfigurer
'columns'
, затем этот SizeVector
значением является [p n]
.
Переключить элементы SizeVector
(например, чтобы изменить [n p]
к [p n]
), измените Value
атрибут ObservationsIn
свойство для ClassificationECOCCoderConfigurer
соответственно. Вы не можете изменить SizeVector
оцените непосредственно.
VariableDimensions
— Значением по умолчанию является [0 0]
, который указывает, что размер массивов фиксируется, как задано в SizeVector
.
Можно установить это значение к [1 0]
если SizeVector
значением является [n p]
или к [0 1]
если это - [p n]
, который указывает, что массив имеет строки переменного размера и столбцы фиксированного размера. Например, [1 0]
указывает что первое значение SizeVector
N
) верхняя граница для количества строк и второго значения SizeVector
P
) количество столбцов.
DataType
— Этим значением является 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];
указывает что первые и вторые измерения X
(количество наблюдений и количество переменных предикторов, соответственно), имеют фиксированные размеры.Чтобы позволить сгенерированному коду C/C++ принимать данные о предикторе максимум с 100 наблюдениями, задайте эти атрибуты кодера X
:
configurer.X.SizeVector = [100 3];
configurer.X.DataType = 'double';
configurer.X.VariableDimensions = [1 0];
указывает что первая размерность X
(количество наблюдений), имеет переменный размер и второе измерение X
(количество переменных предикторов), имеет фиксированный размер. Конкретное количество наблюдений, 100 в этом примере, становится максимальным позволенным количеством наблюдений в сгенерированном коде C/C++. Чтобы позволить любое количество наблюдений, задайте связанное как Inf
.
BinaryLoss
— Атрибуты кодера бинарной функции потерь ученикаEnumeratedInput
объектАтрибуты кодера бинарной функции потерь ученика ('BinaryLoss'
аргумент пары "имя-значение" predict
) в виде EnumeratedInput
объект.
Значения атрибута по умолчанию EnumeratedInput
объект основан на значениях по умолчанию predict
функция:
Value
— Бинарная функция потерь ученика в виде одного из векторов символов в BuiltInOptions
или вектор символов, определяющий пользовательское имя функции. Если бинарные ученики являются SVMs или линейными моделями классификации учеников SVM, значением по умолчанию является 'hinge'
. Если бинарные ученики являются линейными моделями классификации учеников логистической регрессии, значением по умолчанию является 'quadratic'
.
Чтобы использовать пользовательскую опцию, задайте пользовательскую функцию на пути поиска файлов 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
— Декодирование значения схемы в виде 'lossweighted'
(значение по умолчанию), 'lossbased'
, или LearnerCoderInput
объект.
Если вы устанавливаете IsConstant
к false
, затем программное обеспечение изменяет Value
к LearnerCoderInput
объект с этими значениями атрибута кодера только для чтения:
SizeVector
— [1 12]
VariableDimensions
— [0 1]
DataType
'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
объект.
Когда вы создаете кодер configurer при помощи learnerCoderConfigurer
функция, 'ObservationsIn'
аргумент пары "имя-значение" определяет значения по умолчанию EnumeratedInput
атрибуты кодера:
Value
— Значением по умолчанию является размерность наблюдения данных о предикторе, которую вы используете при создании кодера configurer в виде 'rows'
или 'columns'
. Если вы не задаете 'ObservationsIn'
при создании кодера configurer, значением по умолчанию является 'rows'
.
Этим значением должен быть 'rows'
для модели, которая использует бинарных учеников SVM.
SelectedOption
— Этим значением всегда является 'Built-in'
. Этот атрибут только для чтения.
BuiltInOptions
— Массив ячеек 'rows'
и 'columns'
. Этот атрибут только для чтения.
IsConstant
— Этим значением должен быть true
.
Tunability
— Значением по умолчанию является false
если вы задаете 'ObservationsIn','rows'
при создании кодера configurer и true
если вы задаете 'ObservationsIn','columns'
. Если вы устанавливаете Tunability
к false
, программное обеспечение устанавливает Value
к 'rows'
. Если вы задаете другие значения атрибута когда 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
(MATLAB Coder). Эта опция задает количество выходных аргументов в функции точки входа генерации кода. Объектная функция generateCode
генерирует две функции точки входа — predict.m
и update.m
для predict
и update
функции модели классификации ECOC, соответственно — и генерируют код C/C++ для двух функций точки входа. Заданное значение для NumOutputs
свойство соответствует количеству выходных аргументов в функции точки входа predict.m
.
Типы данных: double
update
АргументыСвойства, перечисленные в этом разделе, задают атрибуты кодера update
аргументы функции в сгенерированном коде. update
функционируйте берет обученные и новые параметры модели модели в качестве входных параметров и возвращает обновленную версию модели, которая содержит новые параметры. Чтобы позволить обновить параметры в сгенерированном коде, необходимо задать атрибуты кодера параметров прежде, чем сгенерировать код. Используйте LearnerCoderInput
объект задать атрибуты кодера каждого параметра. Значения атрибута по умолчанию основаны на параметрах модели во входном параметре Mdl
из learnerCoderConfigurer
.
BinaryLearners
— Атрибуты кодера обученных бинарных учениковClassificationSVMCoderConfigurer
возразите | ClassificationLinearCoderConfigurer
объектАтрибуты кодера обученных бинарных учеников (BinaryLearners
из модели классификации ECOC) в виде ClassificationSVMCoderConfigurer
объект (для бинарных учеников SVM) или ClassificationLinearCoderConfigurer
объект (для линейных бинарных учеников).
Используйте update
аргументы SVM или линейного кодера configurer возражают, чтобы задать атрибуты кодера всех бинарных учеников.
Для настройки BinaryLearners
, программное обеспечение использует только update
свойства аргумента и игнорируют другие свойства объекта.
Когда вы обучаете модель ECOC с бинарными учениками SVM, у каждого ученика может быть различное количество векторов поддержки. Поэтому программное обеспечение конфигурирует значения атрибута по умолчанию 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
количество столбцов.
DataType
— Этим значением является 'single'
или 'double'
. Тип данных по умолчанию сопоставим с типом данных обучающих данных, которые вы используете, чтобы обучить Mdl
.
Tunability
— Если вы обучаете модель с линейной функцией ядра, и модель хранит линейные коэффициенты предиктора (Beta
) без векторов поддержки и связанных значений, затем этим значением должен быть false
. В противном случае этим значением должен быть true
.
Для получения дополнительной информации о другом update
аргументы, смотрите update
аргументы ClassificationSVMCoderConfigurer
и update
аргументы ClassificationLinearCoderConfigurer
.
Cost
— Атрибуты кодера misclassification стоятсяLearnerCoderInput
объектАтрибуты кодера стоимости misclassification (Cost
из модели классификации ECOC) в виде LearnerCoderInput
объект.
Значения атрибута по умолчанию LearnerCoderInput
объект основан на входном параметре Mdl
из learnerCoderConfigurer
:
SizeVector
— Этим значением должен быть [c c]
, где c
количество классов.
VariableDimensions
— Этим значением должен быть [0 0]
, указание, что размер массивов фиксируется, как задано в SizeVector
.
DataType
— Этим значением является 'single'
или 'double'
. Тип данных по умолчанию сопоставим с типом данных обучающих данных, которые вы используете, чтобы обучить Mdl
.
Tunability
— Значением по умолчанию является true
.
Prior
— Атрибуты кодера априорных вероятностейLearnerCoderInput
объектАтрибуты кодера априорных вероятностей (Prior
из модели классификации ECOC) в виде LearnerCoderInput
объект.
Значения атрибута по умолчанию LearnerCoderInput
объект основан на входном параметре Mdl
из learnerCoderConfigurer
:
SizeVector
— Этим значением должен быть [1 c]
, где c
количество классов.
VariableDimensions
— Этим значением должен быть [0 0]
, указание, что размер массивов фиксируется, как задано в SizeVector
.
DataType
— Этим значением является '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
(MATLAB Coder), вместо того, чтобы использовать generateCode
функция.
После генерации двух файлов функции точки входа (predict.m
и update.m
) при помощи generateFiles
функция, можно изменить эти файлы согласно рабочему процессу генерации кода. Например, можно изменить predict.m
файл, чтобы включать предварительную обработку данных, или можно добавить эти функции точки входа в другой проект генерации кода. Затем можно сгенерировать код C/C++ при помощи codegen
(MATLAB Coder) функция и codegen
аргументы, подходящие для модифицированных функций точки входа или проекта генерации кода. Используйте эти три свойства, описанные в этом разделе как начальная точка установленного codegen
аргументы.
CodeGenerationArguments
— codegen
аргументыЭто свойство доступно только для чтения.
codegen
Аргументы (MATLAB Coder) в виде массива ячеек.
Это свойство позволяет вам настроить рабочий процесс генерации кода. Используйте generateCode
функционируйте, если вы не должны настраивать свой рабочий процесс.
Вместо использования generateCode
с кодером configurer configurer
, можно сгенерировать код C/C++ можно следующим образом:
generateFiles(configurer) cgArgs = configurer.CodeGenerationArguments; codegen(cgArgs{:})
cgArgs
соответственно перед вызовом codegen
.
Если вы изменяете другие свойства configurer
, обновления программного обеспечения CodeGenerationArguments
свойство соответственно.
Типы данных: cell
PredictInputs
— Список настраиваемых входных параметров predict
Это свойство доступно только для чтения.
Список настраиваемых входных параметров точки входа функционирует predict.m
для генерации кода в виде массива ячеек. Массив ячеек содержит другой массив ячеек, который включает coder.PrimitiveType
(MATLAB Coder) объекты и coder.Constant
(MATLAB Coder) объекты.
Если вы изменяете атрибуты кодера predict
аргументы, затем обновления программного обеспечения соответствующие объекты соответственно. Если вы задаете Tunability
припишите как false
, затем программное обеспечение удаляет соответствующие объекты из PredictInputs
список.
Массив ячеек в PredictInputs
эквивалентно configurer.CodeGenerationArguments{6}
для кодера configurer configurer
.
Типы данных: cell
UpdateInputs
— Список настраиваемых входных параметров update
Это свойство доступно только для чтения.
Список настраиваемых входных параметров точки входа функционирует update.m
для генерации кода в виде массива ячеек структуры. Структура включает coder.CellType
Объект (MATLAB Coder) для BinaryLearners
и coder.PrimitiveType
(MATLAB Coder) возражает для 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
просмотреть и изменить компилятор по умолчанию. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения.
Сгенерируйте код для predict
и update
функции модели классификации ECOC (Mdl
) с настройками по умолчанию.
generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationECOCModel.mat' Code generation successful.
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, 25-Aug-2021 22:30:42 [varargout{1:nargout}] = initialize('predict',X,varargin{:}); end
type update.m
function update(varargin) %#codegen % Autogenerated by MATLAB, 25-Aug-2021 22:30:42 initialize('update',varargin{:}); end
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen % Autogenerated by MATLAB, 25-Aug-2021 22:30:42 coder.inline('always') persistent model if isempty(model) model = loadLearnerForCoder('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, чтобы сгенерировать код С, который предсказывает метки для новых данных о предикторе. Затем переобучите модель с помощью различных настроек и параметров обновления в сгенерированном коде, не регенерируя код.
Обучите модель
Загрузите ирисовый набор данных Фишера.
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: [1x1 ClassificationSVMCoderConfigurer] Prior: [1x1 LearnerCoderInput] Cost: [1x1 LearnerCoderInput] Predict Inputs: X: [1x1 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
так, чтобы сгенерированный код принял любое количество наблюдений. Измените SizeVector
и VariableDimensions
атрибуты. 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: {1x7 cell} IsConstant: 1 Tunability: 0
Чтобы использовать значение не по умолчанию в сгенерированном коде, необходимо задать значение прежде, чем сгенерировать код. Задайте Value
атрибут BinaryLoss
как 'exponential'
.
configurer.BinaryLoss.Value = 'exponential';
configurer.BinaryLoss
ans = EnumeratedInput with properties: Value: 'exponential' SelectedOption: 'Built-in' BuiltInOptions: {1x7 cell} 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: [1x1 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: [1x1 ClassificationSVMCoderConfigurer] Prior: [1x1 LearnerCoderInput] Cost: [1x1 LearnerCoderInput] Predict Inputs: X: [1x1 LearnerCoderInput] BinaryLoss: [1x1 EnumeratedInput] Decoding: [1x1 EnumeratedInput] Code Generation Parameters: NumOutputs: 2 OutputFileName: 'ClassificationECOCModel' Properties, Methods
Отображение теперь включает BinaryLoss
и Decoding
также.
Сгенерируйте код
Чтобы сгенерировать код C/C++, у вас должен быть доступ к компилятору C/C++, который сконфигурирован правильно. MATLAB Coder определяет местоположение и использует поддерживаемый, установленный компилятор. Можно использовать mex
-setup
просмотреть и изменить компилятор по умолчанию. Для получения дополнительной информации см. Компилятор Значения по умолчанию Изменения.
Сгенерируйте код для predict
и update
функции модели классификации ECOC (Mdl
).
generateCode(configurer)
generateCode creates these files in output folder: 'initialize.m', 'predict.m', 'update.m', 'ClassificationECOCModel.mat' Code generation successful.
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 = 0x1 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 = 0x1 empty double column vector
Сравнение подтверждает тот label
и label_mex
равны, и NegLoss
и NegLoss_mex
равны в допуске.
LearnerCoderInput
ОбъектКодер configurer использует LearnerCoderInput
объект задать атрибуты кодера predict
и update
входные параметры.
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';
learnerCoderConfigurer
| ClassificationECOC
| CompactClassificationECOC
| predict
| update
| ClassificationSVMCoderConfigurer
| ClassificationLinearCoderConfigurer
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.