Time series training using 2D CNN

4 views (last 30 days)
igor Lisogursky
igor Lisogursky on 23 Sep 2020
Commented: igor Lisogursky on 9 Oct 2020
Hi ,
I am trying to use 2D CNN to train and then predict time series (specifically analog signal splitted into 5 samples each sequence ---> the whole input matrix is Nx5) ...
Though i defined 4d matrices XTrain and YTrain for trainNetwork() function as follows :
... COMMENTS ...
I defently defined 4d matrix with images 1xchannel_length but still getting the error below :
"
>> MatlabNnPilot
155 net = trainNetwork(XTrain,YTrain,layers,options);
Error using trainNetwork (line 165)
Invalid training data. X must be a 4-D array of images.
Error in MatlabNnPilot (line 155)
net = trainNetwork(XTrain,YTrain,layers,options);
"
Please advise how to resovle it if possible ?
Igor
  1 Comment
igor Lisogursky
igor Lisogursky on 27 Sep 2020
As well attaching here the sizes of XTrain and YTrain from the same code :

Sign in to comment.

Answers (1)

Srivardhan Gadila
Srivardhan Gadila on 28 Sep 2020
I tried the following code which is written based on the above mentioned code & I'm not getting any errors. You can refer to the net = trainNetwork(X,Y,layers,options) syntax and also it's corresponding Input Arguments description.
Try checking the following code once:
input_size = 5;
output_size = 1;
numHiddenUnits = 32;
epochs = 50;
nTrainSamples = 40725;
layers = [ ...
imageInputLayer([1 input_size 1],'Name','input')
convolution2dLayer([1 input_size],1,'Name','conv')
batchNormalizationLayer('Name','bn')
reluLayer('Name','relu')
fullyConnectedLayer(output_size, 'Name','fc')
regressionLayer('Name','regression')];
% lgraph = layerGraph(layers);
% analyzeNetwork(layers)
%%
trainData = randn([1 5 1 nTrainSamples]);
% trainLabels = randn(nTrainSamples,numClasses);
trainLabels = randn([1 1 1 nTrainSamples]);
size(trainData)
size(trainLabels)
%%
options = trainingOptions('adam', ...
'InitialLearnRate',0.005, ...
'ValidationData',{trainData,trainLabels},...
'LearnRateSchedule','piecewise',...
'MaxEpochs',epochs, ...
'MiniBatchSize',32, ...
'Verbose',1, ...
'Plots','training-progress');
net = trainNetwork(trainData,trainLabels,layers,options);
  5 Comments
Srivardhan Gadila
Srivardhan Gadila on 6 Oct 2020
@igor Lisogursky, you can verify the same by creating your network and using analyzeNetwork function to view the shape of the activations after each layer.
igor Lisogursky
igor Lisogursky on 9 Oct 2020
Thanks @Srivardhan Gadila for a responde it will be usefull func

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!