Main Content

replaceLayer

Replace layer in neural network

Description

netUpdated = replaceLayer(net,layerName,layers) replaces the layer layerName in the dlnetwork object net with the layers in layers.

replaceLayer connects the layers in layers sequentially and connects layers into the network.

example

netUpdated = replaceLayer(net,layerPath,layers) replaces the layer specified by layerPath in the dlnetwork object net with the layers in layers. (since R2024a)

example

netUpdated = replaceLayer(___,ReconnectBy=mode) additionally specifies the method of reconnecting layers.

Examples

collapse all

Define a simple network architecture and display the network in a plot.

net = dlnetwork;

layers = [
    imageInputLayer([28 28 1],Name="input")
    convolution2dLayer(3,16,Padding="same")
    reluLayer(Name="relu1")
    additionLayer(2,Name="add")
    fullyConnectedLayer(10)
    softmaxLayer];

net = addLayers(net,layers);
net = connectLayers(net,"input","add/in2");

figure
plot(net)

Figure contains an axes object. The axes object contains an object of type graphplot.

Replace the ReLU layer in the network with a batch normalization layer followed by a leaky ReLU layer.

layers = [
    batchNormalizationLayer
    leakyReluLayer(0.1)];

net = replaceLayer(net,"relu1",layers);

Plot the updated network.

figure
plot(net)

Figure contains an axes object. The axes object contains an object of type graphplot.

Define a network architecture containing several network layers.

net = dlnetwork;

layers = [lstmLayer(100,OutputMode="sequence")
    dropoutLayer(0.2)];

lstmDropoutLayer = networkLayer(layers);

layers = [sequenceInputLayer(3)
    lstmDropoutLayer
    lstmDropoutLayer
    fullyConnectedLayer(10)
    softmaxLayer];

net = addLayers(net,layers);

Plot the network.

figure
plot(net)

Figure contains an axes object. The axes object contains an object of type graphplot.

Look up the first LSTM layer by specifying the path to the layer. The path includes the name of the network layer ("subnet_1") and the name of the LSTM layer ("lstm"), separated by a forward slash. You can use the path to look up layers nested within a hierarchy of multiple network layers.

tempLSTMLayer = getLayer(net,"subnet_1/lstm");

Edit properties of the layer, and replace the original layer with the modified layer.

tempLSTMLayer.InputWeightsInitializer = "zeros";
tempLSTMLayer.RecurrentWeightsInitializer = "zeros";
tempLSTMLayer.BiasInitializer = "ones";
tempLSTMLayer.Name = "modifiedLSTM";

Replace the original layer with the modified layer, specifying the network, the path to the layer to replace, and the modified layer.

net = replaceLayer(net,"subnet_1/lstm",tempLSTMLayer);

Input Arguments

collapse all

Neural network, specified as a dlnetwork object.

Name of the layer to replace, specified as a string scalar or a character vector.

Network layers, specified as a Layer array.

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

Path to nested layer, specified as a character vector or string scalar.

For a layer within a networkLayer, specify layerPath as:

  • The name of the network layer and the name of the nested layer separated by a forward slash "/". For example, the path to a layer named "nestedLayerName" in a network layer named "networkLayerName" is "networkLayerName/nestedLayerName". If there are multiple levels of nested layers, then specify the path using the form networkLayerName1/.../networkLayerNameN/nestedLayerName.

Custom layers can have a dlnetwork as a learnable or state property. For a layer of a dlnetwork in the property of a custom layer, specify layerPath as:

  • The name of the custom layer, the name of the dlnetwork property, and the name of the nested layer separated by forward slashes "/". For example, the path to a layer named "layerName" inside a dlnetwork property named "propertyName" of a custom layer named "customLayerName" is "customLayerName/propertyName/layerName". If there are multiple levels of nested layers, then specify the path using the form "customLayerName1/propertyName1/.../customLayerNameN/propertyNameN/layerName".

Data Types: char | string

Method to reconnect layers specified as one of the following:

  • "name" – Reconnect layers using the input and output names of the replaced layer. For each layer connected to an input of the replaced layer, reconnect the layer to the input of the same input name of layers(1). For each layer connected to an output of the replaced layer, reconnect the layer to the output of the same output name of layers(end).

  • "order" – Reconnect layers using the order of the input names of layers(1) and the output names of layers(end). Reconnect the layer connected to the ith input of the replaced layer to the ith input of layers(1). Reconnect the layer connected to the jth output of the replaced layer to the jth output of layers(end).

Output Arguments

collapse all

Updated network, returned as an uninitialized dlnetwork object.

To initialize the learnable parameters of a dlnetwork object, use the initialize function.

The replaceLayer function does not preserve quantization information. If the input network is a quantized network, then the output network does not contain quantization information.

Version History

Introduced in R2018b

expand all