replaceLayer
Replace layer in neural network
Syntax
Description
replaces the layer netUpdated = replaceLayer(net,layerName,layers)layerName in the dlnetwork
object net with the layers in layers.
replaceLayer connects the layers in
layers sequentially and connects
layers into the network.
replaces the layer specified by netUpdated = replaceLayer(net,layerPath,layers)layerPath in the
dlnetwork object net with the layers in
layers. (since R2024a)
additionally specifies the method of reconnecting layers.netUpdated = replaceLayer(___,ReconnectBy=mode)
Examples
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)
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)

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)

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
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 formnetworkLayerName1/.../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
dlnetworkproperty, and the name of the nested layer separated by forward slashes"/". For example, the path to a layer named"layerName"inside adlnetworkproperty 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"– Reconnectlayersusing 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 oflayers(1). For each layer connected to an output of the replaced layer, reconnect the layer to the output of the same output name oflayers(end)."order"– Reconnectlayersusing the order of the input names oflayers(1)and the output names oflayers(end). Reconnect the layer connected to theith input of the replaced layer to theith input oflayers(1). Reconnect the layer connected to thejth output of the replaced layer to thejth output oflayers(end).
Output Arguments
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 R2018bStarting in R2024a, you can now replace a layer nested inside a networkLayer or inside the property of a custom layer by specifying
the path to the nested layer. To replace a nested layer, use the new
layerPath input.
Starting in R2024a, LayerGraph objects are not recommended. Use
dlnetwork objects instead. This
recommendation means that these syntaxes are not recommended for
LayerGraph input:
lgraphUpdated = replaceLayer(lgraph,layerName,layers)lgraphUpdated = replaceLayer(lgraph,layerName,layers,ReconnectBy=mode)
Most functions that support LayerGraph objects also support
dlnetwork objects. This table shows some typical usages of
LayerGraph objects and how to update your code to use
dlnetwork object functions instead.
| Not Recommended | Recommended |
|---|---|
lgraph = layerGraph; | net = dlnetwork; |
lgraph = layerGraph(layers); | net = dlnetwork(layers,Initialize=false); |
lgraph = layerGraph(net); | net = dag2dlnetwork(net); |
lgraph = addLayers(lgraph,layers); | net = addLayers(net,layers); |
lgraph = removeLayers(lgraph,layerNames); | net = removeLayers(net,layerNames); |
lgraph =
replaceLayer(lgraph,layerName,layers); | net = replaceLayer(net,layerName,layers); |
lgraph = connectLayers(lgraph,s,d); | net = connectLayers(net,s,d); |
lgraph = disconnectLayers(lgraph,s,d); | net = disconnectLayers(net,s,d); |
plot(lgraph); | plot(net); |
To train a neural network specified as a dlnetwork object,
use the trainnet
function.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)