connectLayers - Connect layers in neural network - MATLAB (original) (raw)
Connect layers in neural network
Syntax
Description
[netUpdated](#mw%5F245cd580-91e4-4ba0-8efd-73ef7987af1d%5Fsep%5Fmw%5F5956ea1d-4747-411e-8acc-7424b78ab717) = connectLayers([net](#mw%5F245cd580-91e4-4ba0-8efd-73ef7987af1d%5Fsep%5Fmw%5F3ffb42b3-6af7-4c22-82b3-4fb0f6a399f2),[s](#d126e44960),[d](#d126e45001))
connects the source layer s
to the destination layerd
in the dlnetwork
objectnet
. The updated network, netUpdated
, contains the same layers as net
and includes the new connection.
Examples
Create and Connect Addition Layer
Create an empty neural network dlnetwork
object and add an addition layer with two inputs and the name 'add'
.
net = dlnetwork; layer = additionLayer(2,'Name','add'); net = addLayers(net,layer);
Add two ReLU layers to the neural network and connect them to the addition layer. The addition layer outputs the sum of the outputs from the ReLU layers.
layer = reluLayer('Name','relu1'); net = addLayers(net,layer); net = connectLayers(net,'relu1','add/in1');
layer = reluLayer('Name','relu2'); net = addLayers(net,layer); net = connectLayers(net,'relu2','add/in2');
Visualize the updated network in a plot.
Create Neural Network from Scratch
Define a two-output neural network that predicts both categorical labels and numeric values given 2-D images as input.
Specify the number of classes and responses.
numClasses = 10; numResponses = 1;
Create an empty neural network.
Define the layers of the main branch of the network and the softmax output.
layers = [ imageInputLayer([28 28 1],Normalization="none")
convolution2dLayer(5,16,Padding="same")
batchNormalizationLayer
reluLayer(Name="relu_1")
convolution2dLayer(3,32,Padding="same",Stride=2)
batchNormalizationLayer
reluLayer
convolution2dLayer(3,32,Padding="same")
batchNormalizationLayer
reluLayer
additionLayer(2,Name="add")
fullyConnectedLayer(numClasses)
softmaxLayer(Name="softmax")];
net = addLayers(net,layers);
Add the skip connection.
layers = [ convolution2dLayer(1,32,Stride=2,Name="conv_skip") batchNormalizationLayer reluLayer(Name="relu_skip")];
net = addLayers(net,layers); net = connectLayers(net,"relu_1","conv_skip"); net = connectLayers(net,"relu_skip","add/in2");
Add the fully connected layer for the regression output.
layers = fullyConnectedLayer(numResponses,Name="fc_2"); net = addLayers(net,layers); net = connectLayers(net,"add","fc_2");
View the neural network in a plot.
Input Arguments
net
— Neural network
dlnetwork
object
Neural network, specified as a dlnetwork object.
s
— Connection source
string scalar | character vector
Connection source, specified as a character vector or a string scalar.
- If the source layer has a single output, then
s
is the name of the layer. - If the source layer has multiple outputs, then
s
is the layer name followed by the"/"
character and the name of the layer output:"layerName/outputName"
.
Example: "conv"
Example: "mpool/indices"
d
— Connection destination
string scalar | character vector
Connection destination, specified as a string scalar or a character vector.
- If the destination layer has a single input, then
d
is the name of the layer. - If the destination layer has multiple inputs, then
d
is the layer name followed by the"/"
character and the name of the layer input:"layerName/inputName"
.
Example: "fc"
Example: "add/in1"
Output Arguments
netUpdated
— Updated network
dlnetwork
object
Updated network, returned as an uninitialized dlnetwork object.
To initialize the learnable parameters of a dlnetwork
object, use the initialize function.
The connectLayers
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 R2017b
R2024a: LayerGraph
objects are not recommended
Starting in R2024a, LayerGraph
objects are not recommended. Usedlnetwork objects instead. This recommendation means that this syntax is not recommended forLayerGraph
input:
lgraphUpdated = connectLayers(lgraph,s,d)
Most functions that support LayerGraph
objects also supportdlnetwork
objects. This table shows some typical usages ofLayerGraph
objects and how to update your code to usedlnetwork
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.