Main Content

importCaffeLayers

Import convolutional neural network layers from Caffe

Description

example

layers = importCaffeLayers(protofile) imports the layers of a Caffe [1] network. The function returns the layers defined in the .prototxt file protofile.

This function requires Deep Learning Toolbox™ Importer for Caffe Models support package. If this support package is not installed, then the function provides a download link.

You can download pretrained networks from Caffe Model Zoo [2].

layers = importCaffeLayers(protofile,'InputSize',sz) specifies the size of the input data. If the .prototxt file does not specify the size of the input data, then you must specify the input size.

Examples

collapse all

Download and install Deep Learning Toolbox Importer for Caffe Models support package.

Download the required support package by typing importCaffeLayers at the command line.

importCaffeLayers

If Deep Learning Toolbox Importer for Caffe Models support package is not installed, then the function provides a link to the required support package in the Add-On Explorer. To install the support package, click the link, and then click Install.

Specify the example file 'digitsnet.prototxt' to import.

protofile = 'digitsnet.prototxt';

Import the network layers.

layers = importCaffeLayers(protofile)
layers = 

  1x7 Layer array with layers:

     1   'testdata'   Image Input             28x28x1 images
     2   'conv1'      Convolution             20 5x5x1 convolutions with stride [1  1] and padding [0  0]
     3   'relu1'      ReLU                    ReLU
     4   'pool1'      Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0]
     5   'ip1'        Fully Connected         10 fully connected layer
     6   'loss'       Softmax                 softmax
     7   'output'     Classification Output   crossentropyex with 'class1', 'class2', and 8 other classes

Input Arguments

collapse all

File name of the .prototxt file containing the network architecture, specified as a character vector or a string scalar. protofile must be in the current folder, in a folder on the MATLAB® path, or you must include a full or relative path to the file. If the .prototxt file does not specify the size of the input data, you must specify the size using the sz input argument.

Example: 'digitsnet.prototxt'

Size of input data, specified as a row vector. Specify a vector of two or three integer values [h,w], or [h,w,c] corresponding to the height, width, and the number of channels of the input data.

Example: [28 28 1]

Output Arguments

collapse all

Network architecture, returned as a Layer array or a LayerGraph object. Caffe networks that take color images as input expect the images to be in BGR format. During import, importCaffeLayers modifies the network so that the imported MATLAB network takes RGB images as input.

More About

collapse all

Generate Code for Imported Network Architecture

You can use MATLAB Coder™ or GPU Coder™ together with Deep Learning Toolbox to generate MEX, standalone CPU, CUDA® MEX, or standalone CUDA code for an imported network. For more information, see Code Generation.

  • Use MATLAB Coder with Deep Learning Toolbox to generate MEX or standalone CPU code that runs on desktop or embedded targets. You can deploy generated standalone code that uses the Intel® MKL-DNN library or the ARM® Compute library. Alternatively, you can generate generic C or C++ code that does not call third-party library functions. For more information, see Deep Learning with MATLAB Coder (MATLAB Coder).

  • Use GPU Coder with Deep Learning Toolbox to generate CUDA MEX or standalone CUDA code that runs on desktop or embedded targets. You can deploy generated standalone CUDA code that uses the CUDA deep neural network library (cuDNN), the TensorRT™ high performance inference library, or the ARM Compute library for Mali GPU. For more information, see Deep Learning with GPU Coder (GPU Coder).

importCaffeLayers returns the network architecture layers as a Layer or LayerGraph object. For code generation, you must first convert the imported Layer or LayerGraph object to a network. Convert a Layer or LayerGraph object to a DAGNetwork or SeriesNetwork object by using assembleNetwork. Convert a Layer or LayerGraph object to a dlnetwork object by using dlnetwork. For more information on MATLAB Coder and GPU Coder support for Deep Learning Toolbox objects, see Supported Classes (MATLAB Coder) and Supported Classes (GPU Coder), respectively.

You can generate code for any imported network whose layers support code generation. For lists of the layers that support code generation with MATLAB Coder and GPU Coder, see Supported Layers (MATLAB Coder) and Supported Layers (GPU Coder), respectively. For more information on the code generation capabilities and limitations of each built-in MATLAB layer, see the Extended Capabilities section of the layer. For example, see Code Generation and GPU Code Generation of imageInputLayer.

Use Imported Network Layers on GPU

importCaffeLayers does not execute on a GPU. However, importCaffeLayers imports the layers of a pretrained neural network for deep learning as a Layer array or LayerGraph object, which you can use on a GPU.

  • Convert the imported layers to a DAGNetwork object by using assembleNetwork. On the DAGNetwork object, you can then predict class labels on either a CPU or GPU by using classify. Specify the hardware requirements using the name-value argument ExecutionEnvironment. For networks with multiple outputs, use the predict function and specify the name-value argument ReturnCategorical as true.

  • Convert the imported layers to a dlnetwork object by using dlnetwork. On the dlnetwork object, you can then predict class labels on either a CPU or GPU by using predict. The function predict executes on the GPU if either the input data or network parameters are stored on the GPU.

    • If you use minibatchqueue to process and manage the mini-batches of input data, the minibatchqueue object converts the output to a GPU array by default if a GPU is available.

    • Use dlupdate to convert the learnable parameters of a dlnetwork object to GPU arrays.

      net = dlupdate(@gpuArray,net)

  • You can train the imported layers on either a CPU or GPU by using the trainnet and trainNetwork functions. To specify training options, including options for the execution environment, use the trainingOptions function. Specify the hardware requirements using the name-value argument ExecutionEnvironment. For more information on how to accelerate training, see Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.

Using a GPU requires a Parallel Computing Toolbox™ license and a supported GPU device. For information about supported devices, see GPU Computing Requirements (Parallel Computing Toolbox).

Tips

Version History

Introduced in R2017a