Las predicciones del precio de las acciones del modelo LSTM de múltiples capas keras convergen a un valor constante

introduzca la descripción de la imagen aquí He creado un modelo LSTM multicapa que utiliza la regresión para predecir los valores de los datos del siguiente fotogtwig. El modelo termina después de 20 épocas. Luego obtengo algunas predicciones y las comparo con mis valores de verdad fundamentales. Como puede verlos en la imagen de arriba, las predicciones convergen a un valor constante. No sé por qué sucede esto. Aquí está mi modelo hasta ahora:

from keras.models import Sequential from keras.layers.core import Dense, Activation, Dropout from keras.layers import LSTM, BatchNormalization from tensorflow.python.keras.initializers import RandomUniform init = RandomUniform(minval=-0.05, maxval= 0.05) model = Sequential() model.add(LSTM(kernel_initializer=init, activation='relu', return_sequences=True, units=800, dropout=0.5, recurrent_dropout=0.2, input_shape=(x_train.shape[1], x_train.shape[2]) )) model.add(LSTM(kernel_initializer=init, activation='relu', return_sequences=False, units=500, dropout=0.5, recurrent_dropout=0.2 )) model.add(Dense(1024, activation='linear', kernel_initializer=init)) model.add(BatchNormalization()) model.add(Dropout(0.5)) model.add(Dense(1, activation='linear', kernel_initializer= 'normal')) model.compile(loss='mean_squared_error', optimizer='rmsprop' ) model.summary() 

EDIT1: disminuí las épocas de 20 a 3. los resultados son los siguientes: Resultados de predicción después de 3 épocas.

Al comparar 2 imágenes, puedo llegar a la conclusión de que cuando aumenta el número de épocas, es más probable que las predicciones converjan a un valor específico que es alrededor de -0.1.

Entonces, después de probar un número diferente de unidades LSTM y diferentes tipos de architectures, me di cuenta de que el número actual de unidades LSTM hace que el modelo aprenda tan lentamente y que 20 épocas no eran suficientes para un modelo tan enorme. Para cada capa, cambié el número de unidades LSTM a 64 y también eliminó la capa Dense(1024) y aumentó el número de épocas de 20 a 400 y los resultados fueron increíblemente cercanos a los valores reales de la tierra. Debo mencionar que el conjunto de datos utilizado en el nuevo modelo fue diferente del anterior porque encontré algunos problemas con ese conjunto de datos . Aquí está el nuevo modelo:

 from keras.optimizers import RMSprop from keras.initializers import glorot_uniform, glorot_normal, RandomUniform init = glorot_normal(seed=None) init1 = RandomUniform(minval=-0.05, maxval=0.05) optimizer = RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0) model = Sequential() model.add(LSTM(units=64, dropout=0.2, recurrent_dropout=0.2, input_shape=(x_train.shape[1], x_train.shape[2]), return_sequences=True, kernel_initializer=init)) model.add(LSTM(units=64, dropout=0.2, recurrent_dropout=0.2, return_sequences=False, kernel_initializer=init)) model.add(Dense(1, activation='linear', kernel_initializer= init1)) model.compile(loss='mean_squared_error', optimizer=optimizer ) model.summary() 

Puedes ver las predicciones aquí: introduzca la descripción de la imagen aquí

Todavía no es el mejor modelo, pero al menos superó al anterior. Si tiene alguna otra recomendación sobre cómo mejorarla, será muy apreciada.