Azzera filtri
Azzera filtri

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 visualizzazione (ultimi 30 giorni)
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);

Risposta accettata

Ameer Hamza
Ameer Hamza il 24 Apr 2018
Modificato: Ameer Hamza il 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 Commenti
Ameer Hamza
Ameer Hamza il 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 il 26 Mar 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

Accedi per commentare.

Più risposte (1)

mahmoud Bassiouni
mahmoud Bassiouni il 27 Mar 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