MATLAB Answers

trainNetwork invalid network

255 views (last 30 days)
Why am I getting an invalid network error from trainNetwork? It says layers are not connected and that the input layer is not first and the output layer is not last. I am resuming functionality of my network following the directions in the link below. When I visualize my layers, they are all connected properly and the first layer is the input layer and the last is the output. Why am I getting these errors?
Error using trainNetwork (line 154)
Invalid network.
Caused by:
Layer 'L1': Missing input. Each layer input must be connected to the
output of another layer.
Layer 'L3': Missing input. Each layer input must be connected to the
output of another layer.
Detected missing inputs:
input 'in2'
...
Layer 'L7': Unused output. Each layer output must be connected to the
input of another layer.
Layer 'L0': An input layer must be first in the layer array.
Layer 'Lend': An output layer must be last in the layer array.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 23 Jul 2018
This error is due to a DAGNetwork object being inputted into the trainNetwork for the layers. The correct workflow is to use a Layer array or a LayerGraph object as input to trainNetwork:
To fix the issue, convert the DAGNetwork object into a LayerGraph object first before training:
>> newnet = trainNetwork(source, layerGraph(net),options);
The layer graph describes the architecture of a DAG network (layers and connections). Net.Layers is missing the connections causing those errors.

  2 Comments

MatlabUserN
MatlabUserN on 13 Feb 2019
Hi,
I am trying to use transfer learning technique to use LayerGraph. But somehow getting this error how to resolve it
Error using nnet.internal.cnn.util.validateLayersForLayerGraph>iAssertUniqueAndNonEmptyLayerNames (line 62)
Layer names in layer array must be nonempty.
Zarrin Wu
Zarrin Wu on 24 Apr 2019
You should give a name to all layers when calling layerGraph function.

Sign in to comment.

More Answers (1)

blue cat
blue cat on 20 Jun 2019
Edited: blue cat on 20 Jun 2019
Hi,
I tried "layerGraph(net)", but I still meet "Error using trainNetwork ; Invalid network; Layer '...': Unused input...." problem. How can I solve it?
Below is my code:
NET = shufflenet;NET.Layers;backbone = NET.Layers(1:170);
layers=[
backbone
fullyConnectedLayer(1,'Name','FC')
regressionLayer('Name','regressionL')];
...
net = trainNetwork(tbtrain,layerGraph(layers),options);

  2 Comments

SARAH LONER
SARAH LONER on 29 Nov 2019
hai sir did u slove the error at trainNetwork?
i also had the same error for image segmentation using unet
can u help me to clear this error
Mohammad Bhat
Mohammad Bhat on 24 Jan 2020
lgraph = layerGraph(layers);
where layers is your netwrok/architecture
=================================================================================
net = trainNetwork(trainingData,lgraph ,opts);
=======================================
It will solve yoyur problem. It solved mine also

Sign in to comment.