Плотный ожидает 2d, но получил 3d в LSTM

В моей модели

Xtrain shape : (62, 30, 100)
Ytrain shape : (62, 1, 100)
Xtest shape : (16, 30, 100)
Ytest shape : (16, 1, 100)

Когда я строю свою модель,

model = Sequential()
model.add(LSTM(units=100, return_sequences= True, input_shape=(x_train.shape[1],X_train.shape[2])))
model.add(LSTM(units=100, return_sequences=True))
model.add(Dense(units=100))

model.fit(x_train,y_train,epochs=5,batch_size=13)

когда я пытаюсь подогнать его, выдает ошибку,

ValueError: Error when checking target: expected dense_1 to have 2 dimensions, but got array with shape (62, 1, 100)

Мне нужно спрогнозировать следующую временную метку для всех 100 функций. Какие изменения нужно сделать?

2 ответа

Если вы хотите, чтобы результат каждого шага LSTM обрабатывался отдельно (наиболее распространенное использование размещения слоя Dense после LSTM или других RNN), вам необходимо обернуть его, например:

model = Sequential()
model.add(LSTM(units=100, return_sequences= True, input_shape=(x_train.shape[1],X_train.shape[2])))
model.add(LSTM(units=100, return_sequences=True))
model.add(TimeDistributed(Dense(units=100)))

Каждый вывод будет подан отдельно на слой Dense (конечно, это будет один и тот же слой - все веса будут разделены между каждым его "экземпляром").

Опубликованный код не похож на тот, который вызвал ошибку.

Распечатайте свой model.summary(). Ты увидишь:

  • LSTM 1: (Нет, 30, 100)
  • LSTM 2: (Нет, 30, 100)
  • Плотный: (Нет, 30, 100)

Вы не использовали ничего для уменьшения количества временных шагов до 1. В вашем сообщении об ошибке, в соответствии с этой моделью, определенно должно быть жалоба на попытку (None, 30, 100) против (62, 1, 100).

Чтобы устранить временные интервалы, вам нужно return_sequences=False в последнем LSTM, поэтому ваша модель станет:

  • (Нет, 30, 100)
  • (Нет, 100)
  • (Нет, 100)

Таким образом, вы можете Ytrain.shape == (62,100)

Если вам действительно нужно это среднее измерение == 1, просто используйте Lambda(lambda x: K.expand_dims(x, 1)) после плотного.

Другие вопросы по тегам