1

I am trying to implement Keras LSTM for the airpassenger dataset. It generates the following error.

ValueError: `start_index+length=12 > end_index=11` is disallowed, as no part of the sequence would be left to be used as current step

Here is what I tried. Can you please help me to identify the issue?

import glob
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from statsmodels.tools.eval_measures import rmse
from keras.preprocessing.sequence import TimeseriesGenerator
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
from sklearn.preprocessing import MinMaxScaler
import warnings
warnings.filterwarnings("ignore")

df = pd.read_csv('airline-passengers.csv')
df.Month = pd.to_datetime(df.Month)
df = df.set_index('Month')
train, test = df[-12:], df[:-12]
scaler = MinMaxScaler()
scaler.fit(train)
scaler.transform(train)
scaler.transform(test)
n_input = 12
n_features = 1
generator = TimeseriesGenerator(train, train, length=n_input, batch_size=6)
model = Sequential()
model.add(LSTM(200, activation='relu', input_shape=(n_input, n_features)))
model.add(Dropout(0.15))
model.add(Dense(1))
model.compile(loss='mse',optimizer='adam')
model.fit_generator(generator, epochs=100)
Totura
  • 19
  • 1
  • 7

1 Answers1

0

I have the same problem, and I think in your case is because you are trying to use a length = 12 in a data to len = 12, and TimeseriesGenerator use like target the next value for each sequence (this value would be 13, but you use len 12).