Main Content

coder.DeepLearningConfig

Create deep learning code generation configuration objects

Description

deepLearningCfg = coder.DeepLearningConfig(TargetLibrary = targetlib) creates a deep learning configuration object containing library-specific parameters that codegen uses to generate code for deep neural networks. Assign this deep learning configuration object to the DeepLearningConfig property of the code configuration object created by using coder.config. Pass the code configuration object to the codegen function by using the -config option.

example

Examples

collapse all

Set the code configuration parameters and generate C++ code for an ResNet-50 series network. The generate code does not depends on third-party deep learning libraries.

Create an entry-point function resnet_predict that uses the imagePretrainedNetwork function to load the dlnetwork object that contains the ResNet-50 network. For more information, see Code Generation for dlarray

function out = resnet_predict(in)

dlIn = dlarray(in, 'SSCB');
persistent dlnet;
if isempty(dlnet)
    dlnet = imagePretrainedNetwork('resnet50');
end

dlOut = predict(dlnet, dlIn);
out = extractdata(dlOut);

The persistent object avoids reconstructing and reloading the network object during subsequent calls to the function to invoke the predict method on the input.

The input layer of the pretrained ResNet-50 network accepts images of size 224-by-224-by-3. To read an input image from a graphics file and resize it to 224-by-224, use the following lines of code:

in = imread('peppers.png');
in = imresize(in,[224,224]);

Create a coder.config configuration object for MEX code generation and set the target language to C++. On the configuration object, set DeepLearningConfig with targetlib as 'none'. Use the -config option of the codegen function to pass this code configuration object. The codegen function must determine the size, class, and complexity of MATLAB® function inputs. Use the -args option to specify the size of the input to the entry-point function.

cfg = coder.config('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig(TargetLibrary = 'none'); 
codegen -args {ones(224,224,3,'single')} -config cfg resnet_predict;

The codegen command places all the generated files in the codegen folder. It contains the C++ code for the entry-point function resnet_predict.cpp, header and source files containing the C++ class definitions for the neural network, weight, and bias files.

Input Arguments

collapse all

Target library for deep learning code generation, specified as one of the values in this table.

ValueDescription
'none'

For generating code that does not use any third-party library.

'arm-compute'

For generating code that uses the ARM® Compute Library.

'mkldnn'

For generating code that uses the Intel® Math Kernel Library for Deep Neural Networks (Intel MKL-DNN).

'cmsis-nn'

Common Microcontroller Software Interface Standard - Neural Network (CMSIS-NN) library.

Requires the MATLAB Coder™ Interface for Deep Learning.

'cudnn'

For generating code that uses the CUDA® Deep Neural Network library (cuDNN).

This option requires GPU Coder™.

'tensorrt'

For generating code that takes advantage of the NVIDIA® TensorRT – high performance deep learning inference optimizer and run-time library.

This option requires GPU Coder.

Output Arguments

collapse all

Configuration object based on the target library specified in the input argument. This object contains library-specific parameters that are used during code generation.

Target LibraryDeep Learning Configuration Object
'none'Creates an DeepLearningCodeConfig configuration object.
'arm-compute'Creates an ARMNEONConfig configuration object.
'mkldnn'Creates an MklDNNConfig configuration object.
'cmsis-nnCreates a CMSISNNConfig configuration object.
'cudnn'Creates a CuDNNConfig configuration object.
'tensorrt'Creates a TensorRTConfig configuration object.

Version History

Introduced in R2018b