I am working on an LSTM for time series but I am having problems with the data input and the batch_input_shape. I have always used it and I don’t understand why it is now giving me an error:
ValueError: Unrecognized keyword arguments passed to LSTM: {'batch_input_shape': (1, 3, 1)}
I use Keras v3.3.3 and TensorFlow 2.7
This is the Python Code
mport numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(dataset[i + look_back, 0])
return np.array(dataX), np.array(dataY)
# load the dataset
dataframe = pd.read_csv('data/international-airline-passengers.csv', usecols=[1], engine='python')
dataset = dataframe.values
dataset = dataset.astype('float32')
# normalize the dataset
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
# split into train and test sets
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]
# reshape into X=t and Y=t+1
look_back = 3
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = np.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
testX = np.reshape(testX, (testX.shape[0], testX.shape[1], 1))
# create and fit the LSTM network
batch_size = 1
model = Sequential()
model.add(LSTM(4, batch_input_shape=(batch_size, look_back, 1), stateful=True))
#model.add(LSTM(4, batch_input_shape=(batch_size, trainX.shape[1], trainX.shape[2]), stateful=True))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
for i in range(100):
model.fit(trainX, trainY, epochs=1, batch_size=batch_size, verbose=2, shuffle=False)
#model.reset_metrics()
model.reset_state()
But, I have this error output:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[4], line 13
11 batch_size = 1
12 model = Sequential()
---> 13 model.add(LSTM(4, batch_input_shape=(batch_size, look_back, 1), stateful=True))
14 #model.add(LSTM(4, batch_input_shape=(batch_size, trainX.shape[1], trainX.shape[2]), stateful=True))
15 model.add(Dense(1))
ValueError: Unrecognized keyword arguments passed to LSTM: {'batch_input_shape': (1, 3, 1)}
Anyone know why have I this error?
Knowing how to solve the problem that the code gives me with the data input, specifically the batch_input_shape
, and that the code compiles correctly.