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.

Generación de código para la predicción del modelo de aprendizaje automático en la línea de comandos

En este ejemplo se muestra cómo generar código para la predicción de objetos de modelo de regresión y clasificación en la línea de comandos. También puede generar código utilizando la aplicación MATLAB® Coder™. Ver para más detalles.Generación de código para predicción del modelo de aprendizaje automático utilizando MATLAB Coder App

Algunos objetos de modelo de clasificación y regresión tienen una o función que admite la generación de código.PredecirAleatorio Para obtener una lista de los objetos de modelo y las funciones de objeto que admiten la generación de código, consulte.Soporte de generación de código, notas de uso y limitaciones La predicción que utiliza estas funciones de objeto requiere un objeto de modelo de clasificación o regresión entrenado, pero la opción de no acepta estos objetos.-argscodegen Trabaje en torno a esta limitación mediante el uso y como se describe en este ejemplo.saveCompactModelloadCompactModel

Este diagrama de flujo muestra el flujo de trabajo de generación de código para las funciones de objeto de clasificación y los objetos de modelo de regresión.

Después de entrenar un modelo, guarde el modelo entrenado utilizando.saveCompactModel Defina una función de punto de entrada que cargue el modelo guardado mediante y llame a la función de objeto.loadCompactModel A continuación, genere código para la función de punto de entrada mediante el uso y compruebe el código generado.codegen

Modelo de clasificación de trenes

Entrenar un objeto de modelo de clasificación equipado con una función de generación de código habilitado.Predecir En este caso, entrenar un modelo de clasificación de máquina de vectores de soporte (SVM).

load fisheriris inds = ~strcmp(species,'setosa'); X = meas(inds,3:4); Y = species(inds); Mdl = fitcsvm(X,Y);

Este paso puede incluir el preprocesamiento de datos, la selección de características y la optimización del modelo mediante la validación cruzada, por ejemplo.

Guardar modelo mediantesaveCompactModel

Guarde el modelo de clasificación en el archivo mediante.SVMModel.matsaveCompactModel

saveCompactModel(Mdl,'SVMModel');

hace que el modelo de clasificación completo sea compacto y, a continuación, lo guarda en el archivo binario de MATLAB como una matriz de estructura en la carpeta actual.saveCompactModelMdlSVMModel.mat

Definir función de punto de entrada

Una función, también conocida como la o función, es una función que se define para la generación de código.entry-pointtop-levelprimary Dado que no se puede llamar a ninguna función en el nivel superior mediante, debe definir una función de punto de entrada que llama a las funciones habilitadas para generación de código y generar código de C/C++ para la función de punto de entrada mediante.codegencodegen Todas las funciones dentro de la función de punto de entrada deben admitir la generación de código.

Defina una función de punto de entrada que devuelva las etiquetas pronosticadas para los datos de predictor de entrada. Dentro de la función, cargue el modelo de clasificación entrenado mediante el uso y, a continuación, pase el modelo cargado a.loadCompactModelPredecir En este caso, defina la función, que predice las etiquetas mediante el modelo SVM.predictLabelsSVMMdl

type predictLabelsSVM.m % Display contents of predictLabelsSVM.m file
function label = predictLabelsSVM(x) %#codegen %PREDICTLABELSSVM Label new observations using trained SVM model Mdl %   predictLabelsSVM predicts the vector of labels label using  %   the saved SVM model Mdl and the predictor data x. Mdl = loadCompactModel('SVMModel'); label = predict(Mdl,x); end 

Agregue la Directiva del compilador (o pragma) a la función de punto de entrada después de la firma de la función para indicar que pretende generar código para el algoritmo de MATLAB.%#codegen La adición de esta directiva indica al analizador de código de MATLAB que le ayudará a diagnosticar y corregir infracciones que provocarán errores durante la generación de código. Ver.Check Code with the Code Analyzer (MATLAB Coder)

Si pulsa el botón situado en la sección superior derecha de esta página y abre este ejemplo en MATLAB®, MATLAB® abre la carpeta de ejemplo.Note: Esta carpeta incluye el archivo de función de punto de entrada.

Generar código

Configure el compilador

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)

Generate Code Using codegen

Genere código para la función de punto de entrada utilizando.codegen Dado que C y C++ son lenguajes con tipos estáticos, debe determinar las propiedades de todas las variables en la función de punto de entrada en tiempo de compilación. Especifique los tipos de datos y los tamaños de todas las entradas de la función de punto de entrada cuando llame mediante la opción.codegen-args

En este caso, pase como valor de la opción para especificar que el código generado debe aceptar una entrada que tenga el mismo tipo de datos y tamaño de matriz que los datos de entrenamiento.X-argsX

codegen predictLabelsSVM -args {X}
 

Si el número de observaciones es desconocido en tiempo de compilación, también puede especificar la entrada como de tamaño variable mediante.coder.typeof Para obtener más información, consulte yEspecifique argumentos de tamaño variable para la generación de códigoSpecify Properties of Entry-Point Function Inputs (MATLAB Coder)

Tipo de compilación

MATLAB Coder puede generar código para los siguientes tipos de compilación:

  • MEX (MATLAB Executable) función

  • Código de C/C++ independiente

  • Código de C/C++ independiente compilado en una biblioteca estática

  • Código de C/C++ independiente compilado en una biblioteca vinculada dinámicamente

  • Código de C/C++ independiente compilado en un ejecutable

Puede especificar el tipo de compilación con la opción de.-configcodegen Para obtener más información sobre cómo establecer opciones de generación de código, vea la opción de y.-configcodegenConfigure Build Settings (MATLAB Coder)

De forma predeterminada, CODEGEN genera una función MEX. Una función MEX es un programa de C/C++ que es ejecutable desde MATLAB. Puede utilizar una función MEX para acelerar los algoritmos de MATLAB y probar el código generado para la funcionalidad y los problemas de tiempo de ejecución. Para obtener más información, consulte y.MATLAB Algorithm Acceleration (MATLAB Coder)Why Test MEX Functions in MATLAB? (MATLAB Coder)

Informe de generación de código

Puede usar la marca para generar un informe de generación de código.-report Este informe le ayuda a depurar problemas de generación de código y ver el código de C/C++ generado. Para obtener más información, consulte.Code Generation Reports (MATLAB Coder)

Compruebe que el código generado

Pruebe una función MEX para comprobar que el código generado proporciona la misma funcionalidad que el código original de MATLAB. Para realizar esta prueba, ejecute la función MEX utilizando las mismas entradas que usó para ejecutar el código original de MATLAB y, a continuación, compare los resultados. La ejecución de la función MEX en MATLAB antes de generar código independiente también le permite detectar y corregir errores en tiempo de ejecución que son mucho más difíciles de diagnosticar en el código independiente generado. Para obtener más información, consulte.Why Test MEX Functions in MATLAB? (MATLAB Coder)

Pasar algunos Datos predictores para comprobar si, y la función MEX devuelven las mismas etiquetas.PredecirpredictLabelsSVM

labels1 = predict(Mdl,X); labels2 = predictLabelsSVM(X); labels3 = predictLabelsSVM_mex(X);

Compare las etiquetas previstas mediante.isequal

verifyMEX = isequal(labels1,labels2,labels3)
verifyMEX = logical
   1

Devuelve Logical 1 (), lo que significa que todas las entradas son iguales.isequaltrue La comparación confirma que la función, función y función MEX devuelven las mismas etiquetas.PredecirpredictLabelsSVM

Consulte también

| | |

Temas relacionados