# loadLearnerForCoder

Reconstruct model object from saved model for code generation

## Syntax

## Description

To generate C/C++ code for the object functions of machine learning models
(including `predict`

, `random`

,
`knnsearch`

, `rangesearch`

,
`isanomaly`

, and incremental learning functions), use `saveLearnerForCoder`

, `loadLearnerForCoder`

, and
`codegen`

(MATLAB Coder). After training a machine
learning model, save the model by using `saveLearnerForCoder`

. Define
an entry-point function that loads the model by using
`loadLearnerForCoder`

and calls an object function. Then use
`codegen`

or the MATLAB^{®}
Coder™ app to generate C/C++ code. Generating C/C++ code requires MATLAB
Coder.

For functions that support single-precision C/C++ code generation, use `saveLearnerForCoder`

, `loadLearnerForCoder`

, and
`codegen`

(MATLAB Coder); specify the name-value argument
`'DataType','single'`

when you call the
`loadLearnerForCoder`

function.

This flow chart shows the code generation workflow for the object functions of machine
learning models. Use `loadLearnerForCoder`

for the highlighted step.

Fixed-point C/C++ code generation requires an additional step that defines the
fixed-point data types of the variables required for prediction. Create a fixed-point
data type structure by using the data type function generated by `generateLearnerDataTypeFcn`

, and use the structure as an input argument
of `loadLearnerForCoder`

in an entry-point function. Generating
fixed-point C/C++ code requires MATLAB
Coder and Fixed-Point Designer™.

This flow chart shows the fixed-point code generation workflow for the
`predict`

function of a machine learning model. Use
`loadLearnerForCoder`

for the highlighted step.

reconstructs a model (`Mdl`

= loadLearnerForCoder(`filename`

)`Mdl`

) from the model stored in the
MATLAB formatted binary file (MAT-file) named `filename`

.
You must create the `filename`

file by using `saveLearnerForCoder`

.

returns a fixed-point version of the model stored in `Mdl`

= loadLearnerForCoder(`filename`

,'DataType',`T`

)`filename`

. The structure `T`

contains the fields that specify the fixed-point data types for the variables required to use the `predict`

function of the model. Create `T`

using the function generated by `generateLearnerDataTypeFcn`

.

Use this syntax in an entry-point function, and use `codegen`

to generate fixed-point code for the entry-point function. You can use this syntax only when generating code.

## Examples

## Input Arguments

## Output Arguments

## Limitations

When

`Mdl`

is`CompactLinearModel`

— Suppose you train a linear model by using`fitlm`

and specifying`'RobustOpts'`

as a structure with an anonymous function handle for the`RobustWgtFun`

field, use`saveLearnerForCoder`

to save the model, and then use`loadLearnerForCoder`

to load the model. In this case,`loadLearnerForCoder`

cannot restore the Robust property into the MATLAB Workspace. However,`loadLearnerForCoder`

can load the model at compile time within an entry-point function for code generation.When

`Mdl`

is`CompactClassificationSVM`

or`CompactClassificationECOC`

— If you use`saveLearnerForCoder`

to save a model that is equipped to predict posterior probabilities, and use`loadLearnerForCoder`

to load the model, then`loadLearnerForCoder`

cannot restore the`ScoreTransform`

property into the MATLAB Workspace. However,`loadLearnerForCoder`

can load the model, including the`ScoreTransform`

property, within an entry-point function at compile time for code generation.

## Tips

For single-precision code generation for a Gaussian process regression (GPR) model or a support vector machine (SVM) model, use standardized data by specifying

`'Standardize',true`

when you train the model.

## Algorithms

`saveLearnerForCoder`

prepares a machine learning model (`Mdl`

) for code generation. The function removes some unnecessary properties.

For a model that has a corresponding compact model, the

`saveLearnerForCoder`

function applies the appropriate`compact`

function to the model before saving it.For a model that does not have a corresponding compact model, such as

`ClassificationKNN`

,`ClassificationLinear`

,`RegressionLinear`

,`ExhaustiveSearcher`

,`KDTreeSearcher`

, and`IsolationForest`

, the`saveLearnerForCoder`

function removes properties such as hyperparameter optimization properties, training solver information, and others.

`loadLearnerForCoder`

loads the model saved by `saveLearnerForCoder`

.

## Alternative Functionality

Use a coder configurer created by

`learnerCoderConfigurer`

for the models listed in this table.Model Coder Configurer Object Binary decision tree for multiclass classification `ClassificationTreeCoderConfigurer`

SVM for one-class and binary classification `ClassificationSVMCoderConfigurer`

Linear model for binary classification `ClassificationLinearCoderConfigurer`

Multiclass model for SVMs and linear models `ClassificationECOCCoderConfigurer`

Binary decision tree for regression `RegressionTreeCoderConfigurer`

Support vector machine (SVM) regression `RegressionSVMCoderConfigurer`

Linear regression `RegressionLinearCoderConfigurer`

After training a machine learning model, create a coder configurer of the model. Use the object functions and properties of the configurer to configure code generation options and to generate code for the

`predict`

and`update`

functions of the model. If you generate code using a coder configurer, you can update model parameters in the generated code without having to regenerate the code. For details, see Code Generation for Prediction and Update Using Coder Configurer.

## Extended Capabilities

## Version History

**Introduced in R2019b**

## See Also

`saveLearnerForCoder`

| `codegen`

(MATLAB Coder) | `generateLearnerDataTypeFcn`

### Topics

- Introduction to Code Generation
- Code Generation for Prediction of Machine Learning Model at Command Line
- Code Generation for Prediction of Machine Learning Model Using MATLAB Coder App
- Code Generation for Nearest Neighbor Searcher
- Code Generation for Anomaly Detection
- Fixed-Point Code Generation for Prediction of SVM
- Specify Variable-Size Arguments for Code Generation