I measure sequences of 3 parameters in my system. 2 are independent and the 3rd dependent. Let's call the independent ones $x$ and $y$, and the dependent one $z$. They are each measured once per hour for 10 days starting at time $t = 0$.

This means,

$241$ time steps, $3$ input features ($x$, $y$, and $t$), $1$ output feature ($z$).

I repeat the whole process multiple times (let's say $100$ times).


$100$ times: $241$ time steps, $3$ input features ($x$, $y$, and $t$), $1$ output feature ($z$).

I want to develop a model that trains on this data and learns to predict the entire sequence of values of $z$ corresponding to input sequences of values of $x$, $y$, and $t$. I also wish for the model to be able to work with variable lengths of input sequences. (For clarity: Sequences of $x$, $y$, $t$ and $z$ will have the same length, let's call it $l$. By variable length, I meant the model can work with variable $l$.)

Most pages online discuss time series forecasting, or regression, wherein based on input sequences of input features, the value of the output feature at the next time step is predicted. Is my problem a seq2seq problem or is it some sort of time series regression problem or is it something else?

I tried the following LSTM,

model = tf.keras.models.Sequential([
      tf.keras.layers.LSTM(64, input_shape=(X_train.shape[1], X_train.shape[2]), return_sequences=True),

in which, X_train.shape = [100, 241, 3]

Initially, I used a 2D y_train with shape [100, 241] but the predicted output due to the TimeDistributed layer is 3D with shape [100, 241, 1], so I changed y_train to [100, 241, 1] but the performance diminished.

I'm confused on many fronts. Should I use input_shape=(None, X_train.shape[2]) for variable $l$? Should I even use this LSTM model? Should $t$ be one of the inputs? Without explicitly inputting $t$, how can we quantify the duration that the time steps span.

Any help would be greatly appreciated.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.