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

3 次查看(过去 30 天)
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 个评论
Walter Roberson
Walter Roberson 2020-11-4
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?

请先登录,再进行评论。

回答(2 个)

hla hla myint
hla hla myint 2020-11-5
Thanks Saya ,
Input image is [240 240 155 4] and nii file.

Walter Roberson
Walter Roberson 2020-11-5
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

类别

Help CenterFile Exchange 中查找有关 Pattern Recognition and Classification 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by