How to generate C++ Code from predictAndUpdateState() function of LSTM NN?
1 view (last 30 days)
Hi lovely people,
we are working on a project where we want to use a Time-Series LSTM Neural Network to forecast multiple time steps in the future by using the predictAndUpdateState() function iteratively in a loop, so the network can keep its state, while on every iteration the network is fed with input from its own previous predictions and other forecast data we aquire from different sources. In general it looks like this:
net = getLSTMNN;
cT = initialValue;
numTimeSteps = 120;
XInput = (cT, getCurrentData);
for i = 1:numTimeSteps
if i ~= 1
XInput = (YPred(:,i-1), getForecastData(i-1));
[net,YPred(:,i)] = predictAndUpdateState(net,XInput);
For context: the LSTM is intended to be used as a predictor within a model predictive controller.
We are aware that the official Matlab Ref-Page of predictAndUpdateState does not list C++ Code generation as supported, only GPU CUDA Code for NVIDIA GPUs, which we cannot make use of. But there is an example where the predictAndUpdateState() of a Stateful LSTM is used to generate Code for an ARM-based Rasperry Pi (Link). Thats why we are searching for a way to generate "pure" C++ CPU Code from a predictAndUpdateState() function which is not CUDA dependent or intended for ARM systems.
Any help, advice or tips on how to achieve this would be greatly appreciated!
EDIT: We are on 2020b.
Sindhu Karri on 5 Mar 2021
In the example which you have mentioned, C++ code is generated with ARM Compute Library and currently there is no work around for generating C++ code for predictAndUpdateState without using ARM Compute Library.
Refer to below link to know more about code generation using ARM Compute Library