Я делаю многомерный прогноз временных рядов, используя LSTM.Для этого я использую библиотеку Keras.Я пытаюсь предсказать, когда пользователь войдет в систему дальше.Я передаю Часы, минуты, секунды, день как ввод для каждого пользователя, и я должен был предсказать, когда они войдут в следующий раз.
У меня возникли проблемы при настройке LSTM.Я следую этому учебнику , поскольку он закрыт для того, что я делаю, но я получаю следующую ошибку.Вот мой ввод (это всего лишь пример. Фактический входной файл имеет размер 1 ГБ и имеет время входа в систему для тысяч пользователей.)
#X_train
[[19]
[47]
[50]
[ 4]]]
-----------------
#X_test
[[[19]
[40]
[ 4]
[ 4]]
, а вот мой код
model = Sequential()
embed_dim = 128
lstm_out = 200
batch_size = 32
for users in user_list:
data = df.loc[df['user_list'] == users, 'login_hour':'login_day']
X_train, X_test = train_test_split(data, test_size=0.5, random_state=0)
X_train, X_test= np.array(X_train), np.array(X_test)
X_train = np.reshape(X_train,(X_train.shape[0], X_train.shape[1], 1))
print(X_train)
# print(X_test)
print("-----------------")
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1],1))
print(X_test)
model.add(LSTM(10, input_shape=(4,1), return_sequences=True))
model.add(LSTM(lstm_out, dropout_U = 0.2, dropout_W = 0.2))
model.add(Dense(2,activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam',metrics = ['accuracy'])
model.fit(X_train, Y_train, batch_size =batch_size, nb_epoch = 1, verbose = 5)
print(model.summary())
вот мой вывод
Traceback (most recent call last):
File "test.py", line 238, in <module>
model.add(LSTM(100, input_shape=(4,1), return_sequences=True))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/engine/sequential.py", line 181, in add
output_tensor = layer(self.outputs[0])
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/layers/recurrent.py", line 532, in __call__
return super(RNN, self).__call__(inputs, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/engine/base_layer.py", line 414, in __call__
self.assert_input_compatibility(inputs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/engine/base_layer.py", line 311, in assert_input_compatibility
str(K.ndim(x)))
ValueError: Input 0 is incompatible with layer lstm_3: expected ndim=3, found ndim=2