# How to feed the LSTM with different length for the latest time step?

I am having a training data set for a time-series dataset like below:

import numpy as np
import pandas as pd
train_df = pd.DataFrame(np.random.randint(0,100,size=(100, 16)))
train_df.columns=['var1(t-3)','var2(t-3)','var3(t-3)','var4(t-3)','var1(t-2)','var2(t-2)','var3(t-2)','var4(t-2)','var1(t-1)','var2(t-1)','var3(t-1)','var4(t-1)','var1(t)','var2(t)','var3(t)','var4(t)']
train_X=train_df.drop(['var1(t)'],axis=1)
train_y=train_df[['var1(t)']]


So as you see for training I am inputting the network with past three timesteps of the all 4 variables and the current timestep of the three remaining variables which makes up to 15 variables.

I want to train this with an LSTM with functional API in Keras because I cannot use sequential API in my case due to different input size. So I tried the below:

import tensorflow
from tensorflow.keras.utils import plot_model
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import LSTM
visible = Input(shape=(100,15))
hidden1 = LSTM(10)(visible)
hidden2 = Dense(10, activation='relu')(hidden1)
output = Dense(1, activation='sigmoid')(hidden2)
model = Model(inputs=visible, outputs=output)

history = model.fit(train_X, train_y, batch_size=64, epochs=2, validation_split=0.2)


But this throws the error like below:

ValueError: Input 0 of layer lstm_2 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 15]

Then I reshape the train and test like below:

train_X=train_X.reshape(train_X.shape[0],1,train_X.shape[1])
train_y = train_y.reshape(train_y.shape[0],1)

train_X shape is (100,15)
train_y shape is (100,1)


But this gave a very huge MAPE and RMSE.So I think my reshaping is wrong here.

Any help is appreciated.