Я пытаюсь предсказать цену открытия на следующий день. Я могу получить правильное форматирование для подачи на входе, т. Е. («Open», «High» столбцы в день в течение n раз). Однако, когда я форматирую в 3D-массив, моя форма выглядит следующим образом:
(1200, 60, 2)
X_train имеет 1200 выборок, с 60 временными шагами (предыдущие 60 дней исторических данных) и 2 функциями (открытыми и высокими)
Однако моя проблема возникает, когда она достигает части кодирования keras при реализации слоев. Это мой код, который я использую:
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 2)))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50))
regressor.add(Dropout(0.2))
regressor.add(Dense(units = 1))
Проблема возникает с последней строкой. Я хочу, чтобы выходные данные были только 1. Поэтому, по сути, я хочу, чтобы значения Open и High входных рядов использовались для выработки окончательного единичного вывода только цены Open. Однако, установив Dense(units = 1)
, создается эта ошибка:
ValueError: Error when checking target: expected dense_1 to have shape (1,) but got array with shape (2,)
Чтобы исправить это, я попытался изменить его на 2 Dense(units=2)
, однако в конечном результате на графике выводятся 2 строки, одна для открытого и один для высокого, который не то, что я хочу Это 2 выхода, где я хочу 1. Я не уверен, что делать с этим сценарием.
regressor.summary ()
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 60, 50) 10600
_________________________________________________________________
dropout_1 (Dropout) (None, 60, 50) 0
_________________________________________________________________
lstm_2 (LSTM) (None, 60, 50) 20200
_________________________________________________________________
dropout_2 (Dropout) (None, 60, 50) 0
_________________________________________________________________
lstm_3 (LSTM) (None, 60, 50) 20200
_________________________________________________________________
dropout_3 (Dropout) (None, 60, 50) 0
_________________________________________________________________
lstm_4 (LSTM) (None, 50) 20200
_________________________________________________________________
dropout_4 (Dropout) (None, 50) 0
_________________________________________________________________
dense_1 (Dense) (None, 2) 102
=================================================================
Total params: 71,302
Trainable params: 71,302
Non-trainable params: 0