How to make predictions using an already-trained LSTM model?
Show older comments
Hello everyone,
I have the attached example LSTM code with the data file (omni.txt: hourly data).
I would like to know how to use the trained LSTM model to make a prediction for new data.
I think the answer lies within the lines starting from line 113, but I'm a novice with LSTM.
----------------------------------------------------------------------------------------------------------------------------------
A side question:
This code is dealing with only one input (feature) to predict its own evolution with time, How can we transform it to deal with several inputs at once?
How can we transform this code to take several inputs and predict the temporal evolution of another output?
For instance, like the feedforward backpropagation network in which it can take several inputs to predict a single output (or several outputs).
I appreciate your help!
Thank you,
Accepted Answer
More Answers (2)
Hiro Yoshino
on 17 Jan 2020
I took a look at your script.
in the line 131, you actually update the network together with getting the prediction out of it:
[net,YPred(:,i)] = predictAndUpdateState(net,XTest(:,i),'ExecutionEnvironment','cpu');
10 Comments
Mohamed Nedal
on 20 Jan 2020
Hiro Yoshino
on 25 Jan 2020
I have taken a further look at your code.
I suppose the way you trained the network was not right.
This is a regression problem, isn't it?
So you should have
Xtrain [numOfDataset, LengthOfPeriodYouTakeIntoAccount]
Ytrain [numOfDataset, 1]
in cell format.
You can leave the imput dimension as what it is.
Hiro Yoshino
on 28 Jan 2020
I have changed some lines as follows:
%% Prepare Predictors and Responses
%XTrain = dataTrainStandardized(1:end-1);
%YTrain = dataTrainStandardized(2:end);
[XTrain, YTrain] = timeSeriesDataForLSTM(dataTrainStandardized, 30);
and
%% Define LSTM Network Architecture
% Specify the LSTM layer to have 200 hidden units
numFeatures = 1;
numResponses = 1;
numHiddenUnits = 100;
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits,'OutputMode', 'last')
fullyConnectedLayer(numResponses)
regressionLayer];
The function I created for this purpose is attached. Please find it.
Mohamed Nedal
on 28 Jan 2020
Hiro Yoshino
on 29 Jan 2020
Do you understand the solution I suggested? Please check out the function and have a good understanding.
Then, you should change the data accordingly after the line 64.
I got it work until 63 by changing the data format.
Mohamed Nedal
on 7 Apr 2020
Hiro Yoshino
on 9 Apr 2020
w: window size
n: length of the signal
You're effectively creating a set of dataset by chopping the signal using the window size. So if the length of the signal is shorter than the window size, it won't work.
Mohamed Nedal
on 9 Apr 2020
Hiro Yoshino
on 9 Apr 2020
No, it is a window size with which you chop the signal into peices.
you may want to take a look at this and understand how it works:
Mohamed Nedal
on 3 May 2020
NGR MNFD
on 2 Jul 2021
0 votes
Hello . I hope you have a good day. I sent the article to your service. I implemented the coding part in the MATLAB software, but to implement my network, two lines of setlayers, training MATLAB 2014 give me an error. What other function do you think I should replace? Do you think the codes I wrote are correct?( I used gait-in-neurodegenerative-disease-database in physionet website.) Thanks a lot
Categories
Find more on Deep Learning Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


