Input size mismatch with dlnetwork
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I'm trying to do some GAN tranfer learning and am getting some errors when I try to add layers before existing layers when I use a dlnetwork. Here's a minimal example:
%% make network 1
layers1=[imageInputLayer([8 1],'Normalization','none','Name','in1')
fullyConnectedLayer(20,'Name','FC1')
tanhLayer('Name','T1')
fullyConnectedLayer(1,'Name','Lout')
];
lgraph1 = layerGraph(layers1);
dlnet1 = dlnetwork(lgraph1);
%% optionally do some training on dlnet1
%% add layers in front of network 1
layersNew = [imageInputLayer([16 1],'Normalization','none','Name','in2');
fullyConnectedLayer( 8,'Name','FC2')
tanhLayer('Name','T2')
];
lgraph2 = layerGraph(dlnet1);
%lgraph2= lgraph1
lgraph2 = addLayers(lgraph2,layersNew);
lgraph2 = disconnectLayers(lgraph2,'in1','FC1');
lgraph2 = connectLayers(lgraph2,'T2','FC1');
lgraph2 = removeLayers(lgraph2,'in1');
dlnet2 = dlnetwork(lgraph2);
This results in the error
Error using dlnetwork (line 81)
Invalid network.
Error in minimum_error (line 24)
dlnet2 = dlnetwork(lgraph2);
Caused by:
Layer 'FC1': Input size mismatch. Size of input to this layer is
different from the expected input size.
Inputs to this layer:
from layer 'T2' (1×1×8 output)
Presumably this is because of the 1-D "image" I'm forced to use rather than a generic 1D vector input. T2 is giving a 1x1x8 output whereas FC is expecting 8x1 (or maybe 1x8) input. The weird thing is that if I uncomment the "lgraph2= lgraph1" line, there is no error. So there must be a matrix permutation happening in the layerGraph->dlnetwork->layerGraph conversion.
I can't find any way to permute or reshape the output of a layer to resolve this. Any workaround?
0 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur Image Data Workflows dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!