Errors in transfer learning using resnet101

10 views (last 30 days)
I would like to use resnet101 to do transfer learning.
When I build the network and use the trainNetwork function as shown below, I get the following error. What is the cause?
Layer 'res2a': unconnected input. The input of each layer must be coupled with the output of another layer.
An unconnected input was detected:
net = resnet101;
layers = net.Layers;
layers = [
layers(1:344)
fullyConnectedLayer(Numberofclasses)
layers(346)
classificationLayer];
options = trainingOptions('sgdm',...
'MiniBatchSize',16,...
'InitialLearnRate', 0.0001, ...
...)
trainNetwork(TrainImage,TrainData,layers,options);

Accepted Answer

Akira Agata
Akira Agata on 18 Mar 2021
Since ResNet-101 is imported as a DAGNetwork object, the following steps will be needed (more details can be found in this Link)
  1. Convert DAGNetwork object to LayerGraph object
  2. Replace the last few layers
  3. Freeze bias/weight of initial layers (optional)
  4. Re-connect all the layers in the original order by using the support function createLgraphUsingConnections
So the MATLAB code will be like this.
net = resnet101;
% 1. Convert DAGNetwork object to LayerGraph object
lgraph = layerGraph(net);
% 2. Replace the last few layers
lgraph = replaceLayer(lgraph,'fc1000',...
fullyConnectedLayer(Numberofclasses,'Name','fcNew'));
lgraph = replaceLayer(lgraph,'ClassificationLayer_predictions',...
classificationLayer('Name','ClassificationNew'));
% 4. Re-connect all the layers in the original order
% by using the support function createLgraphUsingConnections
layers = lgraph.Layers;
connections = lgraph.Connections;
lgraph = createLgraphUsingConnections(layers,connections);
% Train the network
options = trainingOptions('sgdm',...
'MiniBatchSize',16,...
'InitialLearnRate', 0.0001, ...
...)
net = trainNetwork(imdsTrain,lgraph,options);
  3 Comments
baby
baby on 18 Feb 2022
I dont think its an error, its a warning but somehow it appears in red. You can ignore this and proceed with the training procedure, and to make sure you can use command:
analyzeNetwor(lgraph)
if found no error, the traning will process very nicely. ( I hope).
Tan
Tan on 14 May 2023
hi although using the command
layers = lgraph.Layers;
connections = lgraph.Connections;
lgraph = createLgraphUsingConnections(layers,connections);
it also show the same error:
trainedNet = trainNetwork(augmentedTrainingSet,lgraph,options);
Error using trainNetwork
Invalid network.
Caused by:
Layer 'inception_3a-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_3b-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_4a-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_4b-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_4c-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_4d-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_4e-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_5a-output': Unconnected input. Each layer input must be connected to the output of another
layer.
Layer 'inception_5b-output': Unconnected input. Each layer input must be connected to the output of another
layer.

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!