Конфигуратор кодера для многоклассовой модели с использованием двоичных учащихся
A ClassificationECOCCoderConfigurer
объект является конфигуратором кодера многоклассовой модели классификации выходных кодов с исправлением ошибок (ECOC) (ClassificationECOC
или CompactClassificationECOC
), который использует машину опорных векторов (SVM) или линейных двоичных учащихся.
Конфигуратор кодера предлагает удобные функции, чтобы сконфигурировать опции генерации кода, сгенерировать код C/C + + и обновить параметры модели в сгенерированном коде.
Сконфигурируйте опции генерации кода и укажите атрибуты кодера параметров модели с помощью свойств объекта.
Сгенерируйте код C/C + + для predict
и update
функции модели ECOC при помощи generateCode
. Для генерации кода C/C + + требуется MATLAB® Coder™.
Обновите параметры модели в сгенерированном коде C/C + + без необходимости регенерировать код. Эта функция уменьшает усилия, необходимые для регенерации, перенаправления и повторной проверки кода C/C + + при переобучении модели с новыми данными или настройками. Перед обновлением параметров модели используйтеvalidatedUpdateInputs
чтобы подтвердить и извлечь параметры модели для обновления.
Этот график потока показывает рабочий процесс генерации кода с помощью конфигуратора кодера.
Для указаний по применению генерации кода и ограничений многоклассовой модели классификации ECOC, смотрите разделы Генерации кода CompactClassificationECOC
, predict
, и update
.
После обучения многоклассовой модели классификации ECOC с SVM или линейными двоичными учащимися при помощи fitcecoc
, создайте конфигуратор кодера для модели при помощи learnerCoderConfigurer
. Используйте свойства конфигуратора кодера, чтобы задать атрибуты кодера predict
и update
аргументы. Затем используйте generateCode
для генерации кода C/C + + на основе заданных атрибутов кодера.
predict
АргументыСвойства, перечисленные в этом разделе, определяют атрибуты кодера predict
аргументы функции в сгенерированном коде.
X
- Атрибуты кодера данных предиктораLearnerCoderInput
объектАтрибуты кодера данных предиктора, чтобы передать в сгенерированный код C/C + + для predict
функция классификационной модели ECOC, заданная как LearnerCoderInput
объект.
Когда вы создаете конфигуратор кодера при помощи learnerCoderConfigurer
function, the входного параметра 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.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
функция:
Value
- Двоичная функция потерь учащегося, заданная как один из векторов символов в BuiltInOptions
или вектор символов, обозначающий пользовательское имя функции. Если двоичные ученики являются SVM или линейными классификационными моделями учащихся 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
объект.
Когда вы создаете конфигуратор кодера при помощи learnerCoderConfigurer
function, the 'ObservationsIn'
аргумент пары "имя-значение" определяет значения по умолчанию EnumeratedInput
атрибуты кодера:
Value
- Значение по умолчанию является размерностью наблюдения данных предиктора, используемым при создании конфигуратора кодера, заданным как 'rows'
или 'columns'
. Если вы не задаете 'ObservationsIn'
при создании конфигуратора кодера значение по умолчанию 'rows'
.
Это значение должно быть 'rows'
для модели, которая использует двоичных учащихся SVM.
SelectedOption
- Это значение всегда 'Built-in'
. Этот атрибут доступен только для чтения.
BuiltInOptions
- Массив ячеек 'rows'
и 'columns'
. Этот атрибут доступен только для чтения.
IsConstant
- Это значение должно быть true
.
Tunability
- Значение по умолчанию false
если вы задаете 'ObservationsIn','rows'
при создании конфигуратора кодера и 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
function, где n
является NumOutputs
значение.
После создания конфигуратора кодера configurer
можно задать количество выходов при помощи записи через точку.
configurer.NumOutputs = 2;
The 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 или конфигуратора линейного кодера для определения атрибутов кодера всех двоичных учащихся.
Для строения 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
- Атрибуты кодера затрат на неправильную классификациюLearnerCoderInput
объектАтрибуты кодера затрат на неправильную классификацию (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.OutputFileName = 'myModel';
Типы данных: char
Verbose
- Уровень подробностейtrue
(логический 1) (по умолчанию) | false
(логический 0)Уровень подробностей, заданный как true
(логический 1) или false
(логический 0). Уровень подробностей управляет отображением уведомлений в командной строке.
Значение | Описание |
---|---|
true (логический 1) | Программа отображает уведомления, когда изменения атрибутов кодера параметра приводят к изменениям для других зависимых параметров. |
false (логический 0) | Программа не отображает уведомления. |
Чтобы включить обновление параметров модели машинного обучения в сгенерированном коде, необходимо сконфигурировать атрибуты кодера параметров перед генерацией кода. Атрибуты параметров кодера зависят друг от друга, поэтому программное обеспечение сохраняет зависимости как ограничения строения. Если вы изменяете атрибуты кодера параметра с помощью конфигуратора кодера, и изменение требует последующих изменений других зависимых параметров, чтобы удовлетворить ограничениям строения, то программное обеспечение изменяет атрибуты кодера зависимых параметров. Уровень подробностей определяет, отображает ли программа уведомления об этих последующих изменениях.
После создания конфигуратора кодера configurer
можно изменить уровень подробностей при помощи записи через точку.
configurer.Verbose = false;
Типы данных: logical
Чтобы настроить рабочий процесс генерации кода, используйте 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
, можно сгенерировать код 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
.
Типы данных: 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
.
Типы данных: cell
generateCode | Сгенерируйте код C/C + + с помощью конфигуратора кодера |
generateFiles | Сгенерируйте файлы MATLAB для генерации кода с помощью конфигуратора кодера |
validatedUpdateInputs | Валидация и экстракция параметров модели машинного обучения для обновления |
Обучите модель машинного обучения, а затем сгенерируйте код для predict
и update
функций модели при помощи конфигуратора кодера.
Загрузите набор данных радужки Фишера и обучите многоклассовую модель ECOC с помощью двоичных учащихся SVM.
load fisheriris
X = meas;
Y = species;
Mdl = fitcecoc(X,Y);
Mdl
является ClassificationECOC
объект.
Создайте конфигуратор кодера для ClassificationECOC
моделировать при помощи learnerCoderConfigurer
. Задайте данные предиктора X
. The 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
объект, который является конфигуратором кодера 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.
The 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, 23-Apr-2021 12:42:55 [varargout{1:nargout}] = initialize('predict',X,varargin{:}); end
type update.m
function update(varargin) %#codegen % Autogenerated by MATLAB, 23-Apr-2021 12:42:55 initialize('update',varargin{:}); end
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen % Autogenerated by MATLAB, 23-Apr-2021 12:42:55 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 и создайте конфигуратор кодера для модели. Используйте свойства конфигуратора кодера, чтобы задать атрибуты кодера параметров модели ECOC. Используйте функцию объекта конфигуратора кодера, чтобы сгенерировать код С, который предсказывает метки для новых данных предиктора. Затем переобучите модель с помощью разных настроек, и обновите параметры в сгенерированном коде, не регенерируя код.
Обучите модель
Загрузите набор данных радужки Фишера.
load fisheriris
X = meas;
Y = species;
Создайте двоичный шаблон учащегося SVM, чтобы использовать функцию Гауссова ядра и стандартизировать данные предиктора.
t = templateSVM('KernelFunction','gaussian','Standardize',true);
Обучите многоклассовую модель ECOC с помощью шаблона t
.
Mdl = fitcecoc(X,Y,'Learners',t);
Mdl
является ClassificationECOC
объект.
Создайте конфигуратор кодера
Создайте конфигуратор кодера для ClassificationECOC
моделировать при помощи learnerCoderConfigurer
. Задайте данные предиктора X
. The 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
объект, который является конфигуратором кодера ClassificationECOC
объект. На отображении показаны настраиваемые входные параметры predict
и update
: X
, BinaryLearners
, Prior
, и Cost
.
Задайте атрибуты параметров кодера
Задайте атрибуты кодера predict
аргументы (данные предиктора и аргументы пары "имя-значение" 'Decoding'
и 'BinaryLoss'
) и update
аргументы (поддерживающие векторы учащихся SVM), чтобы можно было использовать эти аргументы в качестве входных параметров predict
и update
в сгенерированном коде.
Во-первых, задайте атрибуты кодера X
чтобы сгенерированный код принял любое количество наблюдений. Измените SizeVector
и VariableDimensions
атрибуты. The 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
Чтобы использовать значение nondefault в сгенерированном коде, необходимо задать значение перед генерацией кода. Задайте 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
(логический 0), программное обеспечение устанавливает Tunability
на true
(логический 1).
Отображение атрибутов кодера 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 = 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.
The 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
возвращает логический 1 (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
ОбъектКонфигуратор кодера использует LearnerCoderInput
объект, чтобы задать атрибуты кодера predict
и update
входные параметры.
A LearnerCoderInput
объект имеет следующие атрибуты, чтобы задать свойства массива входных параметров в сгенерированном коде.
Имя атрибута | Описание |
---|---|
SizeVector | Размер массива, если соответствующий Верхняя граница размера массива, если соответствующий |
VariableDimensions | Индикатор, определяющий, имеет ли каждую размерность массива переменный или фиксированный размер, заданный как
|
DataType | Тип данных массива |
Tunability | Индикатор, определяющий, есть или нет
Если вы задаете другие значения атрибутов при |
После создания конфигуратора кодера можно изменить атрибуты кодера с помощью записи через точку. Для примера задайте атрибуты кодера коэффициентов Alpha
в BinaryLearners
конфигуратора кодера configurer
:
configurer.BinaryLearners.Alpha.SizeVector = [100 1];
configurer.BinaryLearners.Alpha.VariableDimensions = [1 0];
configurer.BinaryLearners.Alpha.DataType = 'double';
Verbose
) как true
(по умолчанию), затем программное обеспечение отображает уведомления, когда вы изменяете атрибуты кодера параметра модели машинного обучения, и изменение изменяет атрибуты кодера других зависимых параметров.EnumeratedInput
ОбъектКонфигуратор кодера использует EnumeratedInput
объект, чтобы задать атрибуты кодера predict
входные параметры, которые имеют конечный набор доступных значений.
Система координат EnumeratedInput
объект имеет следующие атрибуты, чтобы задать свойства массива входных параметров в сгенерированном коде.
Имя атрибута | Описание |
---|---|
Value | Значение
Значение по умолчанию |
SelectedOption | Состояние выбранной опции, заданное как
Этот атрибут доступен только для чтения. |
BuiltInOptions | Список доступных векторов символов для соответствующих Этот атрибут доступен только для чтения. |
IsConstant | Индикатор, определяющий, является ли значение массива константой времени компиляции ( Если вы задаете это значение |
Tunability | Индикатор, определяющий, есть или нет Если вы задаете другие значения атрибутов при |
После создания конфигуратора кодера можно изменить атрибуты кодера с помощью записи через точку. Для примера задайте атрибуты кодера BinaryLoss
конфигуратора кодера configurer
:
configurer.BinaryLoss.Value = 'linear';
ClassificationECOC
| ClassificationLinearCoderConfigurer
| ClassificationSVMCoderConfigurer
| CompactClassificationECOC
| learnerCoderConfigurer
| predict
| update
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.