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

3 次查看(过去 30 天)
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);

采纳的回答

Ameer Hamza
Ameer Hamza 2018-4-24
编辑:Ameer Hamza 2018-4-24
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 个评论
Ameer Hamza
Ameer Hamza 2018-4-24

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 2019-3-26
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

请先登录,再进行评论。

更多回答(1 个)

mahmoud Bassiouni
mahmoud Bassiouni 2019-3-27
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