Error in running a matlab code
Hello,
I am trying to do image to image regression neural network training. In place of digitTrain4DArrayData, I have used my own dataset of 500 input and 500 output grayscale images of size 100*100 pixels for training.
The code is as follows:
imds1 = datastore(fullfile(matlabdrive,"T10itTI"),"IncludeSubFolders",true,...
"FileExtensions",".png","type","image");
imds2 = datastore(fullfile(matlabdrive,"TFiSTI"),"IncludeSubFolders",true,...
"FileExtensions",".png","type","image");
dsnew = combine(imds1,imds2);
layers = [
imageInputLayer([100 100 1])
batchNormalizationLayer
reluLayer('Name','relu_1')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_2')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_3')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_4')
convolution2dLayer(1,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_5')
convolution2dLayer(3,1,'Stride',2)
batchNormalizationLayer
reluLayer('Name','relu_6')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_7')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_8')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_9')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_10')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_11')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_12')
convolution2dLayer(1,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_13')
transposedConv2dLayer(1,1,'Stride',2)
batchNormalizationLayer
reluLayer('Name','relu_14')
convolution2dLayer(1,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_15')
convolution2dLayer(1,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_16')
convolution2dLayer(3,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_17')
convolution2dLayer(1,1,'Stride',1)
batchNormalizationLayer
reluLayer('Name','relu_18')
transposedConv2dLayer(3,1,'Stride',2)
fullyConnectedLayer(1)
regressionLayer
]
lgraph = layerGraph(layers);
options = trainingOptions("adam", ...
InitialLearnRate=8e-3, ...
SquaredGradientDecayFactor=0.99, ...
MaxEpochs=20, ...
MiniBatchSize=64, ...
Plots="training-progress")
net=trainNetwork(dsnew, lgraph, options);
On running the code, I get following error:
Error using trainNetwork Invalid training data. The output size ([1 1 1]) of the last layer does not match the response size ([1 1 1972224]).
When I use fullyConnectedLayer(1972224) in place of fullyConnectedLayer(1), I get following error:
Error using trainNetwork Layer 'fc': Invalid initializer. Requested 1972224x17161 (252.2GB) array exceeds maximum array size preference (5.0GB). This might cause MATLAB to become unresponsive.
Error in mt1tt1 (line 95) net=trainNetwork(dsnew, lgraph, options);
Caused by: Error using nnet.internal.cnn.assembler.InitializeMixin/initializeLearnableParameters Layer 'fc': Invalid initializer. Requested 1972224x17161 (252.2GB) array exceeds maximum array size preference (5.0GB). This might cause MATLAB to become unresponsive.
Can you suggest correction in code?
Thankyou