The training image are the size of [32 32 32 4] but the input layer expects image size [32 32 32 3]

3 visualizaciones (últimos 30 días)
I train the network the following :
imageDir=fullfile(tempdir,'PP');
if ~exist(imageDir,'dir')
mkdir(imageDir);
end
sourceDatalaoc=[imageDir filesep 'Brain'];
volc=fullfile (sourceDatalaoc, 'AA')
if~ exist(volc,'dir')
mkdir(volc);
end
loc=fullfile (sourceDatalaoc, 'BB')
if~ exist(loc,'dir')
mkdir(loc);
end
imds = imageDatastore(volc,'FileExtensions','.nii','ReadFcn',@sampleReadeFcn);
classNames = ["edema","nonEnhancingTumor","enhancingTumour"];
pixelLabelID = [1 2 3];
pxds = pixelLabelDatastore(loc,classNames,pixelLabelID,'FileExtensions','.nii','ReadFcn',@sampleReadeFcn);
V = read(imds);
L = read(pxds);
%h = labelvolshow(L,V(:,:,:,1));
pximds = pixelLabelImageDatastore(imds,pxds);
inputPatchSize = [32 32 32 4];
numClasses = 2;
patchSize = [32 32 32];
patchPerImage = 8;
miniBatchSize = 16;
patchds = randomPatchExtractionDatastore(imds,pxds,patchSize, ...
'PatchesPerImage',patchPerImage);
patchds.MiniBatchSize = miniBatchSize;
layers = [
image3dInputLayer([32 32 32 3)
convolution3dLayer(3,12,'Stride',1,'Padding','Same')
batchNormalizationLayer
reluLayer
transposedConv3dLayer(3,6,'Stride',1,'Cropping',1)
batchNormalizationLayer
reluLayer
convolution3dLayer(1,2)
softmaxLayer
pixelClassificationLayer
]
opts = trainingOptions('sgdm', ...
'InitialLearnRate',1e-3, ...
'ExecutionEnvironment','CPU',...
'MaxEpochs',100);
[net2,info] = trainNetwork(patchds,layers,opts);
Error:The training image are the size of [32 32 32 4] but the input layer expects image size [32 32 32 3]
  1 comentario
Walter Roberson
Walter Roberson el 4 de Nov. de 2020
There is no image input layer that can handle 4d but nifti files can be 4d (with time if I recall correctly)
How do you want to handle the fact that your input has a time dimension?

Iniciar sesión para comentar.

Respuestas (2)

hla hla myint
hla hla myint el 5 de Nov. de 2020
Thanks Saya ,
Input image is [240 240 155 4] and nii file.

Walter Roberson
Walter Roberson el 5 de Nov. de 2020
You are trying to create a deep network using image processing layers, but your data is 4D. None of the available image layers support 4D.
If your 4th dimension represents time, then you should be considering a sequence layer; https://www.mathworks.com/help/deeplearning/ref/nnet.cnn.layer.sequenceinputlayer.html

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by