How to arrange convolutional layer for 3D RGB Images

5 views (last 30 days)
Dear fellows,
Currently I am tryinying to build encoder decoder layer for 3D RGB input, the objective is to maintain the image size of the output equal to the input. Image input size is 224x224x3. I tried to arrange the convolutional layer following by relu and max pooling layer. However, I continously get error saying that : Dimensions of arrays being concatenated are not consistent. Is there any hints how to do it correctly?
Thanks
  2 Comments
Srivardhan Gadila
Srivardhan Gadila on 21 May 2021
@Rahmawati Rahmawati, can you provide the code you have implemented with the exact error message that is displayed in the command window.
Rahmawati Rahmawati
Rahmawati Rahmawati on 21 May 2021
@Srivardhan Gadila I have solved the problem above by changing the filter size with 3x3 before the output of regression layer. Currently I am trying to implement flattening/reshape from CNN to LSTM but still getting error.
Here is the code:
encodingLayers = [ ...
convolution2dLayer(3,16,'Padding','same'), ...
reluLayer, ...
maxPooling2dLayer(2,'Padding','same','Stride',2)];, ...
decodingLayers = [ ...
createUpsampleTransponseConvLayer(2,16), ...
reluLayer, ...
convolution2dLayer(3,3,'Padding','same'), ...
sequenceFoldingLayer('Name','fold')
convolution2dLayer(filterSize,numFilters,'Name','conv')
batchNormalizationLayer('Name','bn')
reluLayer('Name','relu')
sequenceUnfoldingLayer('Name','unfold')
flattenLayer('Name','flatten')
lstmLayer(numHiddenUnits,'OutputMode','last','Name','lstm')
fullyConnectedLayer(numClasses, 'Name','fc')
softmaxLayer('Name','softmax')
classificationLayer('Name','classification')];

Sign in to comment.

Accepted Answer

Srivardhan Gadila
Srivardhan Gadila on 24 May 2021
The reason for the error "Dimensions of arrays being concatenated are not consistent." is because of the inconsistent use of the "..." operator while creating the decodingLayers array. To resolve the issue either use the operator after every layer in the decodingLayers array or completely remove it. Do it similarly for the encodingLayers array as well.
decodingLayers = [
createUpsampleTransponseConvLayer(2,16)
reluLayer
convolution2dLayer(3,3,'Padding','same')
sequenceFoldingLayer('Name','fold')
convolution2dLayer(3,18,'Name','conv')
batchNormalizationLayer('Name','bn')
reluLayer('Name','relu')
sequenceUnfoldingLayer('Name','unfold')
flattenLayer('Name','flatten')
lstmLayer(numHiddenUnits,'OutputMode','last','Name','lstm')
fullyConnectedLayer(numClasses, 'Name','fc')
softmaxLayer('Name','softmax')
classificationLayer('Name','classification')];
Once you have resolved the current issue, you can check for other issues with your network/ layers using the analyzeNetwork function.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!