Main Content

assembleNetwork

Assemble deep learning network from pretrained layers

Description

assembleNetworkcreates deep learning networks from layers without training.

UseassembleNetworkfor the following tasks:

  • Convert a layer array or layer graph to a network ready for prediction.

  • Assemble networks from imported layers.

  • Modify the weights of a trained network.

To train a network from scratch, usetrainNetwork.

example

assembledNet= assembleNetwork(layers)assembles the layer array or layer graphlayers深入学习网络准备好了to use for prediction.

Examples

collapse all

Import the layers from a pretrained Keras network, replace the unsupported layers with custom layers, and assemble the layers into a network ready for prediction.

Import Keras Network

Import the layers from a Keras network model. The network in'digitsDAGnetwithnoise.h5'classifies images of digits.

filename ='digitsDAGnetwithnoise.h5'; lgraph = importKerasLayers(filename,'ImportWeights',true);
Warning: Unable to import some Keras layers, because they are not supported by the Deep Learning Toolbox. They have been replaced by placeholder layers. To find these layers, call the function findPlaceholderLayers on the returned object.

The Keras network contains some layers that are not supported by Deep Learning Toolbox™. TheimportKerasLayersfunction displays a warning and replaces the unsupported layers with placeholder layers.

替换占位符层

To replace the placeholder layers, first identify the names of the layers to replace. Find the placeholder layers usingfindPlaceholderLayersand display their Keras configurations.

placeholderLayers = findPlaceholderLayers(lgraph); placeholderLayers.KerasConfiguration
ans =struct with fields:trainable: 1 name: 'gaussian_noise_1' stddev: 1.5000
ans =struct with fields:trainable: 1 name: 'gaussian_noise_2' stddev: 0.7000

Define a custom Gaussian noise layer by saving the filegaussianNoiseLayer.min the current folder. Then, create two Gaussian noise layers with the same configurations as the imported Keras layers.

gnLayer1 = gaussianNoiseLayer(1.5,'new_gaussian_noise_1'); gnLayer2 = gaussianNoiseLayer(0.7,'new_gaussian_noise_2');

Replace the placeholder layers with the custom layers usingreplaceLayer.

lgraph = replaceLayer(lgraph,'gaussian_noise_1',gnLayer1); lgraph = replaceLayer(lgraph,'gaussian_noise_2',gnLayer2);

Specify Class Names

The imported classification layer does not contain the classes, so you must specify these before assembling the network. If you do not specify the classes, then the software automatically sets the classes to1,2, ...,N, whereNis the number of classes.

The classification layer has the name'ClassificationLayer_activation_1'. Set the classes to0,1, ...,9, and then replace the imported classification layer with the new one.

cLayer = lgraph.Layers(end); cLayer.Classes = string(0:9); lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',cLayer);

Assemble Network

Assemble the layer graph usingassembleNetwork. The function returns aDAGNetworkobject that is ready to use for prediction.

net = assembleNetwork(lgraph)
net = DAGNetwork with properties: Layers: [15x1 nnet.cnn.layer.Layer] Connections: [15x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

Input Arguments

collapse all

Network layers, specified as aLayerarray or aLayerGraphobject.

To create a network with all layers connected sequentially, you can use aLayerarray as the input argument. In this case, the returned network is aSeriesNetworkobject.

A directed acyclic graph (DAG) network has a complex structure in which layers can have multiple inputs and outputs. To create a DAG network, specify the network architecture as aLayerGraphobject and then use that layer graph as the input argument toassembleNetwork.

TheassembleNetworkfunction supports networks with at most one sequence input layer.

For a list of built-in layers, seeList of Deep Learning Layers.

Output Arguments

collapse all

Assembled network ready for prediction, returned as aSeriesNetworkobject or aDAGNetworkobject. The returned network depends on thelayersinput argument:

  • Iflayersis aLayerarray, thenassembledNetis aSeriesNetworkobject.

  • Iflayersis aLayerGraphobject, thenassembledNetis aDAGNetworkobject.

Version History

Introduced in R2018b