I'm trying to train this simple convolutional autoencoder but I'm getting error on the training part. The error says the size of predictions and tragets are not the same. But When I check the network structure using the analyseNetwork function it seems that my input has the same size as my output. I can't find where is the error. Can someone help me?
Follows the code
datastore_MP = datastore("Tiles_MP1_100ov50\", "IncludeSubfolders",true, "LabelSource","foldernames");
images_MP = cell(numel(datastore_MP.Files), 1);
for i = 1:numel(datastore_MP.Files)
img_MP = readimage(datastore_MP, i);
[rows, cols] = size(img_MP);
images_MP{i} = img_MP;
end
encoderBlock = @(block) [
convolution2dLayer(3,2^(3+block), "Padding",'same')
reluLayer
maxPooling2dLayer(2,"Stride",2)
convolution2dLayer(3,2^(5+block), "Padding",'same')
reluLayer
maxPooling2dLayer(2,"Stride",2)];
net_E = blockedNetwork(encoderBlock,1,"NamePrefix","encoder_");
decoderBlock = @(block) [
transposedConv2dLayer(3,2^(5-block),"Stride",2)
reluLayer
transposedConv2dLayer(3,2^(1-block), "Stride",2)
reluLayer];
net_D = blockedNetwork(decoderBlock,1,"NamePrefix","decoder_");
inputSize = [100 100 1];
CAE = encoderDecoderNetwork(inputSize,net_E,net_D);
analyzeNetwork(CAE)
options = trainingOptions( "adam",...
"Plots","training-progress",...
"MaxEpochs", 100,...
"L2Regularization",0.001);
trainedCAE = trainnet(datastore_MP, CAE, "mse", options);

답변 (2개)

newhere
newhere 2024년 5월 23일

0 개 추천

Hey, try changing 'trainnet' to 'trainNetwork'.
trainedCAE = trainNetwork(datastore_MP, CAE, "mse", options);

댓글 수: 1

Aghata
Aghata 2024년 5월 27일
Hello, Fatma.
I tried but this doesn't fix the problem. I've been trying to find a way to set the target size to be the same as the input or output, but without success.

댓글을 달려면 로그인하십시오.

ali kaffashbashi
ali kaffashbashi 2024년 10월 17일

0 개 추천

I guess it tries to set your label sources (the folder names) as targets during the training. Hence, the input and output sizes become different. I reckon using the following code instead of your training line will solve your problem:
trainedCAE = trainnet(combine(datastore_MP,datastore_MP), CAE, "mse", options);

카테고리

제품

릴리스

R2024a

질문:

2024년 5월 23일

답변:

2024년 10월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by