Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

learnerCoderConfigurer

Cree el configurador de codificador del modelo de aprendizaje automático

Descripción

Después de entrenar un modelo de aprendizaje automático, cree un configurador de codificador para el modelo mediante.learnerCoderConfigurer Utilice las funciones de objeto y las propiedades del configurador para especificar las opciones de generación de código y para generar código de C/C++ para las funciones del modelo de aprendizaje automático.Predecirupdate La generación de código C/C++ requiere MATLAB®Coder™.

Este diagrama de flujo muestra el flujo de trabajo de generación de código utilizando un configurador de codificador. Uso learnerCoderConfigurer para el paso resaltado.

ejemplo

configurer = learnerCoderConfigurer(Mdl,X) Devuelve el configurador del codificador para el modelo de aprendizaje automático.configurerMdl Especifique los Datos predictores para la función de.XPredecirMdl

ejemplo

configurer = learnerCoderConfigurer(Mdl,X,Name,Value) Devuelve un configurador de codificador con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, puede especificar el número de argumentos de salida en la función, el nombre de archivo del código de C/C++ generado y el nivel de verbosidad del configurador del codificador.Predecir

Ejemplos

contraer todo

Entrenar un modelo de aprendizaje automático y, a continuación, generar código para las funciones y el modelo mediante el uso de un configurador de codificador.Predecirupdate

Cargue el conjunto de datos y capacite a un modelo de regresión de máquina de vectores de soporte (SVM).carsmall

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

es un objeto.MdlRegressionSVM

Cree un configurador de codificador para el modelo utilizando.RegressionSVMlearnerCoderConfigurer Especifique los datos del predictor.X La función utiliza la entrada para configurar los atributos del codificador de la entrada de función.learnerCoderConfigurerXPredecir

configurer = learnerCoderConfigurer(Mdl,X)
configurer =    RegressionSVMCoderConfigurer with properties:     Update Inputs:              Alpha: [1x1 LearnerCoderInput]     SupportVectors: [1x1 LearnerCoderInput]              Scale: [1x1 LearnerCoderInput]               Bias: [1x1 LearnerCoderInput]     Predict Inputs:                  X: [1x1 LearnerCoderInput]     Code Generation Parameters:         NumOutputs: 1     OutputFileName: 'RegressionSVMModel'     Properties, Methods  

es un objeto, que es un configurador de codificador de un objeto.configurerRegressionSVMCoderConfigurerRegressionSVM

Para generar código de C/C++, debe tener acceso a un compilador de C/C++ que esté configurado correctamente. MATLAB Coder localiza y utiliza un compilador compatible e instalado. Puede usar para ver y cambiar el compilador predeterminado.mex-setup Para obtener más información, consulte.Cambiar el compilador predeterminado (MATLAB)

Genere código para las funciones y el modelo de regresión de SVM () con la configuración predeterminada.PredecirupdateMdl

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

La función completa estas acciones:generateCode

  • Genere los archivos de MATLAB necesarios para generar código, incluidas las dos funciones de punto de entrada y para las funciones de, respectivamente.predict.mupdate.mPredecirupdateMdl

  • Cree una función MEX denominada para las dos funciones de punto de entrada.RegressionSVMModel

  • Cree el código para la función MEX en la carpeta.codegen\mex\RegressionSVMModel

  • Copie la función MEX a la carpeta actual.

Mostrar el contenido de la, y los archivos mediante la función.predict.mupdate.minitialize.mtype

type predict.m
function varargout = predict(X,varargin) %#codegen % Autogenerated by MATLAB,  09-Feb-2019 00:40:54 [varargout{1:nargout}] = initialize('predict',X,varargin{:}); end 
type update.m
function update(varargin) %#codegen % Autogenerated by MATLAB,  09-Feb-2019 00:40:54 initialize('update',varargin{:}); end 
type initialize.m
function [varargout] = initialize(command,varargin) %#codegen % Autogenerated by MATLAB, 09-Feb-2019 00:40:54 coder.inline('always'); persistent model; if isempty(model)     model = loadCompactModel('RegressionSVMModel.mat'); end switch(command)     case 'update'         % Update struct fields: Alpha         %                       SupportVectors         %                       Scale         %                       Bias                  model = update(model,varargin{:});     case 'predict'         % Predict Inputs: X                  X = varargin{1};         if nargin == 2             [varargout{1:nargout}] = predict(model,X);         else             PVPairs = cell(1,nargin-2);             for i = 1:nargin-2                 PVPairs{1,i} = varargin{i+1};             end             [varargout{1:nargout}] = predict(model,X,PVPairs{:});         end end end 

Entrenar un modelo SVM utilizando un conjunto de datos parciales y crear un configurador de codificador para el modelo. Utilice las propiedades del configurador del codificador para especificar los atributos del codificador de los parámetros del modelo SVM. Utilice la función de objeto del configurador del codificador para generar código C que predice etiquetas para nuevos Datos predictores. A continuación, vuelva a entrenar el modelo utilizando todo el conjunto de datos y actualizar los parámetros en el código generado sin regenerar el código.

Entrenar modelo

Cargue el conjunto de datos.ionosphere Este conjunto de datos tiene 34 predictores y 351 respuestas binarias para las devoluciones de radar, ya sea Bad () o Good ().'b''g' Entrenar un modelo de clasificación de SVM binario utilizando las primeras 50 observaciones.

load ionosphere Mdl = fitcsvm(X(1:50,:),Y(1:50));

es un objeto.MdlClassificationSVM

Cree el configurador del codificador

Cree un configurador de codificador para el modelo utilizando.ClassificationSVMlearnerCoderConfigurer Especifique los datos del predictor.X La función utiliza la entrada para configurar los atributos del codificador de la entrada de función.learnerCoderConfigurerXPredecir Además, establezca el número de salidas en 2 para que el código generado devuelva las etiquetas y las puntuaciones previstas.

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

es un objeto, que es un configurador de codificador de un objeto.configurerClassificationSVMCoderConfigurerClassificationSVM

Especificar atributos de codificador de parámetros

Especifique los atributos del codificador de los parámetros del modelo de clasificación de SVM para que pueda actualizar los parámetros en el código generado después de volver a entrenar el modelo. En este ejemplo se especifican los atributos del codificador de los Datos predictores que se desean pasar al código generado y los atributos del codificador de los vectores de soporte del modelo SVM.

En primer lugar, especifique los atributos del codificador de modo que el código generado acepte cualquier número de observaciones.X Modifique los atributos y.SizeVectorVariableDimensions El atributo especifica el límite superior del tamaño de los Datos predictores y el atributo especifica si cada dimensión de los Datos predictores tiene un tamaño variable o un tamaño fijo.SizeVectorVariableDimensions

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

El tamaño de la primera dimensión es el número de observaciones. En este caso, el código especifica que el límite superior del tamaño es y el tamaño es variable, lo que significa que puede tener cualquier número de observaciones.InfX Esta especificación es conveniente si no conoce el número de observaciones al generar código.

El tamaño de la segunda dimensión es el número de variables predictoras. Este valor debe fijarse para un modelo de aprendizaje automático. contiene 34 predictores, por lo que el valor del atributo debe ser 34 y debe ser el valor del atributo.XSizeVectorVariableDimensionsfalse

Si vuelve a entrenar el modelo SVM con nuevos datos o con diferentes configuraciones, el número de vectores de soporte puede variar. Por lo tanto, especifique los atributos del codificador de modo que pueda actualizar los vectores de soporte en el código generado.SupportVectors

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

Si usted modifica los atributos del codificador de, después el software modifica los atributos del codificador de y para satisfacer las restricciones de configuración.SupportVectorsAlphaSupportVectorLabels Si la modificación de los atributos del codificador de un parámetro requiere cambios subsiguientes en otros parámetros dependientes para satisfacer las restricciones de configuración, el software cambia los atributos del codificador de los parámetros dependientes.

Generar código

Para generar código de C/C++, debe tener acceso a un compilador de C/C++ que esté configurado correctamente. MATLAB Coder localiza y utiliza un compilador compatible e instalado. Puede usar para ver y cambiar el compilador predeterminado.mex-setup Para obtener más información, consulte.Cambiar el compilador predeterminado (MATLAB)

Se usa para generar código para las funciones y el modelo de clasificación de SVM () con la configuración predeterminada.generateCodePredecirupdateMdl

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

genera los archivos de MATLAB necesarios para generar código, incluidas las dos funciones de punto de entrada y para las funciones de, respectivamente.generateCodepredict.mupdate.mPredecirupdateMdl A continuación, crea una función MEX denominada para las dos funciones de punto de entrada en la carpeta y copia la función MEX a la carpeta actual.generateCodeClassificationSVMModelcodegen\mex\ClassificationSVMModel

Compruebe que el código generado

Pasar algunos Datos predictores para comprobar si la función de y la función en la función MEX devuelven las mismas etiquetas.PredecirMdlPredecir Para llamar a una función de punto de entrada en una función MEX que tiene más de un punto de entrada, especifique el nombre de la función como el primer argumento de entrada.

[label,score] = predict(Mdl,X); [label_mex,score_mex] = ClassificationSVMModel('predict',X);

Compare y utilice.Etiquetalabel_mexisequal

isequal(label,label_mex)
ans = logical
   1

Devuelve Logical 1 () si todas las entradas son iguales.isequaltrue La comparación confirma que la función y la función de la función MEX devuelven las mismas etiquetas.PredecirMdlPredecir

puede incluir diferencias de redondeo en comparación con.score_mexPuntuación En este caso, compare y, permitiendo una pequeña tolerancia.score_mexPuntuación

find(abs(score-score_mex) > 1e-8)
ans =    0x1 empty double column vector 

La comparación confirma que y son iguales dentro de la tolerancia.Puntuaciónscore_mex1e–8

Reentrenar modelo y actualizar parámetros en código generado

Vuelva a entrenar el modelo utilizando todo el conjunto de datos.

retrainedMdl = fitcsvm(X,Y);

Extraiga los parámetros que desea actualizar mediante.validatedUpdateInputs Esta función detecta los parámetros del modelo modificados y valida si los valores de parámetro modificados satisfacen los atributos del codificador de los parámetros.retrainedMdl

params = validatedUpdateInputs(configurer,retrainedMdl);

Actualizar los parámetros en el código generado.

ClassificationSVMModel('update',params)

Compruebe que el código generado

Compare las salidas de la función y la función en la función MEX actualizada.PredecirretrainedMdlPredecir

[label,score] = predict(retrainedMdl,X); [label_mex,score_mex] = ClassificationSVMModel('predict',X); isequal(label,label_mex)
ans = logical
   1

find(abs(score-score_mex) > 1e-8)
ans =    0x1 empty double column vector 

La comparación confirma que y son iguales, y los valores de puntuación son iguales dentro de la tolerancia.labelslabels_mex

Argumentos de entrada

contraer todo

Modelo de aprendizaje automático, especificado como un objeto de modelo completo o compacto, como se indica en esta tabla de modelos admitidos.

ModeloObjeto de modelo completo/compactoFunción de entrenamiento
Regresión de máquina de vectores de soporte (SVM),RegressionSVMCompactRegressionSVMfitrsvm
SVM para la clasificación de una clase y binaria,ClassificationSVMCompactClassificationSVMfitcsvm
Modelo multiclase para SVMs,ClassificationECOCCompactClassificationECOCfitcecoc

Para ver las notas de uso de generación de código y las limitaciones de un modelo de aprendizaje automático, consulte la sección generación de código de la página de objetos del modelo.

Datos de predictor para la función de, especificado como una matriz numérica, donde es el número de observaciones y es el número de variables predictoras.PredecirMdlnpnp

La función de un modelo de aprendizaje automático predice las etiquetas para la clasificación y las respuestas para la regresión de los Datos predictores dados.Predecir Después de crear el configurador del codificador, puede utilizar la función para generar código de C/C++ para la función de.configurergenerateCodePredecirMdl El código generado acepta Datos predictores que tienen el mismo tamaño y tipo de datos.X Puede especificar si cada dimensión tiene un tamaño de variable o un tamaño fijo después de crearla.configurer

Por ejemplo, si desea generar código de C/C++ que predice etiquetas utilizando 100 observaciones con tres variables predictoras, especifique as.Xzeros(100,3) La función utiliza sólo el tamaño y el tipo de datos de, no sus valores.learnerCoderConfigurerX Por lo tanto, pueden ser Datos predictores o una expresión que represente el conjunto de valores con un determinado tipo de datos.XMATLAB La salida almacena el tamaño y el tipo de datos de la propiedad de.configurerXXconfigurer Puede modificar el tamaño y el tipo de datos después de crearlo.Xconfigurer Por ejemplo, cambie el número de observaciones a 200 y el tipo de datos a.single

configurer.X.SizeVector = [200 3]; configurer.X.DataType = 'single';

Para permitir que el código de C/C++ generado acepte Datos predictores con hasta 100 observaciones, especifique como y cambie la propiedad. indica que la primera dimensión de (número de observaciones) tiene un tamaño variable y la segunda dimensión de (número de variables predictoras) tiene un tamaño fijo.Xzeros(100,3)VariableDimensions

configurer.X.VariableDimensions = [1 0];
[1 0]XX El número especificado de observaciones, 100 en este ejemplo, se convierte en el número máximo permitido de observaciones en el código de C/C++ generado. Para permitir cualquier número de observaciones, especifique el límite como.Inf
configurer.X.SizeVector = [Inf 3];

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: establece el número de salidas en 2 y especifica el nombre de archivo para el código de C/C++ generado.configurer = learnerCoderConfigurer(Mdl,X,'NumOutputs',2,'OutputFileName','myModel')Predecir'myModel'

Número de argumentos de salida en la función del modelo de aprendizaje automático, especificado como el par separado por comas y que consta de un entero positivo.PredecirMdl'NumOutputs'n

Esta tabla enumera las salidas para la función de los diferentes modelos. en el código de C/C++ generado devuelve las primeras salidas de la función en el orden de dado en la columna Outputs.PredecirPredecirnPredecir

ModeloFunción del modeloPredecirSalidas
Regresión de SVMPredecir(respuestas previstas)yfit
SVM para la clasificación de una clase y binariaPredecir(etiquetas de clase previstas), (puntuaciones o probabilidades posteriores)EtiquetaPuntuación
Modelo multiclase para SVMsPredecir(etiquetas de clase pronosticadas), (pérdidas binarias promedio negadas), (puntuaciones de clase positiva)EtiquetaNegLossPBScore

Por ejemplo, si especifica para un modelo de clasificación de SVM, a continuación, devuelve las etiquetas de clase previstas en el código de C/C++ generado.'NumOutputs',1Predecir

Después de crear el configurador del codificador, puede modificar el número de salidas mediante la notación de puntos.configurer

configurer.NumOutputs = 2;

El argumento de par nombre-valor es equivalente a la opción del compilador.'NumOutputs''-nargout'codegen Esta opción especifica el número de argumentos de salida en la función de punto de entrada de generación de código. La función de objeto de un configurador de codificador genera dos funciones de punto de entrada, y para las funciones de, respectivamente, y genera código de C/C++ para las dos funciones de punto de entrada.generateCodepredict.mupdate.mPredecirupdateMdl El valor especificado para corresponde al número de argumentos de salida en.'NumOutputs'predict.m

Ejemplo: 'NumOutputs',2

Tipos de datos: single | double

Nombre de archivo del código de C/C++ generado, especificado como el par separado por comas que consta de un vector de caracteres o un escalar de cadena.'OutputFileName'

La función de objeto de un configurador de codificador genera código de C/C++ con este nombre de archivo.generateCode

El nombre de archivo no debe contener espacios porque pueden provocar errores de generación de código en determinadas configuraciones del sistema operativo. Además, el nombre debe ser un nombre de función de MATLAB válido.

El nombre de archivo predeterminado es el nombre del objeto seguido por.Mdl'Model' Por ejemplo, si es un u objeto, entonces el nombre predeterminado es.MdlCompactClassificationSVMClassificationSVM'ClassificationSVMModel'

Después de crear el configurador del codificador, puede modificar el nombre del archivo utilizando la notación de puntos.configurer

configurer.OutputFileName = 'myModel';

Ejemplo: 'OutputFileName','myModel'

Tipos de datos: char | string

Nivel de verbosidad, especificado como el par separado por comas que consta de y cualquiera (lógico 1) o (lógico 0).'Verbose'truefalse El nivel de detalle controla la visualización de mensajes de notificación en la línea de comandos para el configurador del codificador.configurer

ValorDescripción
(lógico 1)trueEl software muestra mensajes de notificación cuando los cambios realizados en los atributos del codificador de un parámetro resultan en cambios para otros parámetros dependientes.
(lógico 0)falseEl software no muestra mensajes de notificación.

Para habilitar la actualización de los parámetros del modelo de aprendizaje automático en el código generado, debe configurar los atributos del codificador de los parámetros antes de generar el código. Los atributos del codificador de parámetros dependen unos de otros, por lo que el software almacena las dependencias como restricciones de configuración. Si usted modifica los atributos del codificador de un parámetro usando un configurador del codificador, y la modificación requiere los cambios subsiguientes a otros parámetros dependientes para satisfacer las restricciones de la configuración, después el software cambia los atributos del codificador del dependiente Parámetros. El nivel de verbosidad determina si el software muestra o no mensajes de notificación para estos cambios posteriores.

Después de crear el configurador del codificador, puede modificar el nivel de verbosidad mediante la notación de puntos.configurer

configurer.Verbose = false;

Ejemplo: 'Verbose',false

Tipos de datos: logical

Argumentos de salida

contraer todo

Configurador de codificador de un modelo de aprendizaje automático, devuelto como uno de los objetos del configurador del codificador en esta tabla.

ModeloCoder Configurer Object
Regresión de máquina de vectores de soporte (SVM)RegressionSVMCoderConfigurer
SVM para la clasificación de una clase y binariaClassificationSVMCoderConfigurer
Modelo multiclase para SVMsClassificationECOCCoderConfigurer

Utilice las funciones y propiedades de objeto de un objeto configurador de codificador para configurar opciones de generación de código y generar código de C/C++ para las funciones del modelo de aprendizaje automático.Predecirupdate

Introducido en R2018b