Filter löschen
Filter löschen

I have a problem in the trainNetwork for Xtrain and Ytrain it gives me X and Y must have the same number of observations.

1 Ansicht (letzte 30 Tage)
XTrain = importdata('C:\Users\m7mod\Documents\MATLAB\TrainM.mat'); % size of XTrain = 9 * 44 YTrain = categorical([1 1 1 1 0 0 0 0 0]'); % size of YTrain = 9 * 1 layers = [ ... imageInputLayer([44 1]) convolution2dLayer(5,20) reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer()] options = trainingOptions('sgdm'); XNew = zeros(size(XTrain,1),1,1,size(XTrain,2)); XNew(:,1,1,:) = XTrain(:,:); net = trainNetwork(XNew,YTrain',layers,options);

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 24 Apr. 2018
Bearbeitet: Ameer Hamza am 24 Apr. 2018
You are facing the problem because you are trying to use imageInputLayer and convolution2dLayer which will only work if your input sample have at least 2 non-singleton dimensions (i.e. m*n and m*n*k will work but 1*m or m*1 will not work). For a single dimension data (as in your case 1*44), you can use sequenceInputLayers. For your case, if you can change the layers combination as shown in following script snippet the code will work
XTrain = importdata('C:\Users\m7mod\Documents\MATLAB\TrainM.mat'); % size of XTrain = 9 * 44
YTrain = categorical([1 1 1 1 0 0 0 0 0]'); % size of YTrain = 9 * 1
layers = [ ...
sequenceInputLayer(44)
fullyConnectedLayer(2)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm');
net = trainNetwork(XTrain',YTrain',layers,options);
  3 Kommentare
Ameer Hamza
Ameer Hamza am 24 Apr. 2018

The documentation page state that it was introduced in 2017b.

If you are using earlier version then you can use fitnet and train as

XTrain = importdata('C:\Users\m7mod\Documents\MATLAB\TrainM.mat'); % size of XTrain = 9 * 44 
YTrain = [1 1 1 1 0 0 0 0 0]'; % size of YTrain = 9 * 1 
net = fitnet([10 10]);
net = train(net, XTrain',YTrain');
mahmoud Bassiouni
mahmoud Bassiouni am 26 Mär. 2019
XTrain = AllTrainCel(1:200000,:)'; 4 * 200000
YTrain = categorical([1 0 -1 -2]'); % 4 * 1;
layers = [ ...
sequenceInputLayer(200000)
%reluLayer
LSTMLayer
fullyConnectedLayer(4)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm');
net = trainNetwork(XTrain',YTrain',layers,options);
net = fitnet([10 10]);
XTest = AllTestCel(1:200000,:)';
YTest = categorical([1 0 -1 -2]');
[YPred] = classify(net,XTest);
The problem is in the classification stage the classify doesnt work it. It needs more parameters although it work in the examples with two parameters only

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

mahmoud Bassiouni
mahmoud Bassiouni am 27 Mär. 2019
The problem is in the classification stage the classify doesnt work it. It needs more parameters although it work in the examples of deep learning with two parameters only
XTrain = AllTrainCel(1:200000,:)'; 4 * 200000
YTrain = categorical([1 0 -1 -2]'); % 4 * 1;
layers = [ ...
sequenceInputLayer(200000)
%reluLayer
LSTMLayer
fullyConnectedLayer(4)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm');
net = trainNetwork(XTrain',YTrain',layers,options);
net = fitnet([10 10]);
XTest = AllTestCel(1:200000,:)';
YTest = categorical([1 0 -1 -2]');
[YPred] = classify(net,XTest);

Community Treasure Hunt

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

Start Hunting!

Translated by