ValueError: вход 0 несовместим со слоем lstm_3: ожидаемый ndim = 3, найденный ndim = 2 для многомерного временного ряда - PullRequest
0 голосов
/ 22 февраля 2019

Я делаю многомерный прогноз временных рядов, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...