LSTM Autoencoder para predicción de series de tiempo

Estoy tratando de construir un autocodificador LSTM para predecir los datos de la serie temporal. Como soy nuevo en Python, tengo errores en la parte de deencoding. Intenté construirlo como aquí y Keras . No pude entender la diferencia entre los ejemplos dados en absoluto. El código que tengo ahora se ve como:

Pregunta 1: ¿cómo elegir batch_size y input_dimension cuando cada muestra tiene 2000 valores?

Pregunta 2: ¿Cómo hacer que funcione este Autoencoder LSTM (el modelo y la predicción)? Este es solo el modelo, pero ¿cómo predecirlo? ¿Que se está prediciendo a partir de los digamos a partir de la muestra 10 hasta el final de los datos?

Mydata tiene un total de 1500 muestras, iría con 10 pasos de tiempo (o más si fuera mejor), y cada muestra tiene 2000 valores. Si necesitas más información las incluiré también más adelante.

trainX = np.reshape(data, (1500, 10,2000)) from keras.layers import * from keras.models import Model from keras.layers import Input, LSTM, RepeatVector 

parámetro

 timesteps=10 input_dim=2000 units=100 #choosen unit number randomly batch_size=2000 epochs=20 

Modelo

 inpE = Input((timesteps,input_dim)) outE = LSTM(units = units, return_sequences=False)(inpE) encoder = Model(inpE,outE) inpD = RepeatVector(timesteps)(outE) outD1 = LSTM(input_dim, return_sequences=True)(outD decoder = Model(inpD,outD) autoencoder = Model(inpE, outD) autoencoder.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy']) autoencoder.fit(trainX, trainX, batch_size=batch_size, epochs=epochs) encoderPredictions = encoder.predict(trainX) 

El modelo LSTM que utilizo es este:

 def get_model(n_dimensions): inputs = Input(shape=(timesteps, input_dim)) encoded = LSTM(n_dimensions, return_sequences=False, name="encoder")(inputs) decoded = RepeatVector(timesteps)(encoded) decoded = LSTM(input_dim, return_sequences=True, name='decoder')(decoded) autoencoder = Model(inputs, decoded) encoder = Model(inputs, encoded) return autoencoder, encoder autoencoder, encoder = get_model(n_dimensions) autoencoder.compile(optimizer='rmsprop', loss='mse', metrics=['acc', 'cosine_proximity']) history = autoencoder.fit(x, x, batch_size=100, epochs=100) encoded = encoder.predict(x) 

Funciona con los datos que tienen, x es de tamaño (3000, 180, 40) , es decir, 3000 muestras, timesteps=180 y input_dim=40 .