#python #tensorflow #keras #lstm #recurrent-neural-network
Вопрос:
Я сделал эту модель LSTM :
masmPred_input = Input(shape=(timeStep,1),name = "previous days")
# Define lstm layers.
masmPred_lstm1 = LSTM(75,return_sequences = True ,input_shape = (timeStep,1),name = "RF_analysis1")(masmPred_input)
masmPred_lstm2 = LSTM(25,return_sequences = False ,input_shape = (timeStep,1),name = "RF_analysis2")(masmPred_lstm1)
#define dropout layers that prevents overfitting
masmPred_dropout1 = Dropout(0.25)(masmPred_lstm2)
densePred_1 = Dense(150,activation= "relu")(masmPred_dropout1)
masmPred_dropout2 = Dropout(0.5)(densePred_1)
densePred_2 = Dense(10,activation= "relu")(masmPred_dropout2)
masmPred_output = Dense(1,activation = "linear")(densePred_2)
# Define output layer.
masm_output = tf.keras.layers.Dense(1,activation="relu",name="predicted_RF")(masm_dropout1)
# Define model using inputs and outputs
MASMForecastModel = tf.keras.Model(inputs=masmPred_input,outputs=masmPred_output)
MASMForecastModel.compile(loss="mse", optimizer="adam")
Я пытаюсь делать прогнозы на будущее за пределами набора проверки, поэтому я подгоняю все свои данные к своей модели и делаю следующее :
def Make_predictions(windows, forecast_horizon, timeStep):
pred = np.zeros(forecast_horizon) #predictions that will eventually be plotted
for i in range(forecast_horizon):
p = MASMForecastModel.predict(windows)[0][0] # p looks like [[this]]
#print(MASMForecastModel.predict(windows))
pred[i] = p
new_window = windows[-1][1:]
new_window = np.append(new_window,p)
new_window = new_window.reshape(-1,1)
windows = Append_to_list_of_ts(windows, new_window, timeStep) # adds the new window to the list of windows
#print("Windows : n%sn"%windows)
pred = pred.reshape(1,-1)
return(pred)
windows = np.array([my_data[-timeStep:].reshape(-1,1)]) #the list of all sliding windows
forecast_horizon = 100 #how many days I'd like to predict
timeStep = 10 the lenghth of my sliding window
pred = Make_predictions(windows, forecast_horizon, timeStep)
Однако, когда я действую подобным образом, прогнозы просто стационарны (или очень быстро сходятся к одному и тому же значению).
Я думаю, это связано с тем, что мое окно каждый раз обновляется только на одно значение, и это не приводит к значительному улучшению моего алгоритма для получения другого прогноза.
Как я могу предотвратить возникновение этой проблемы ?
Заранее благодарю вас за вашу помощь.