Проблема заключается в том, что в настоящее время выходная форма слоя LSTM
равна (None, 100)
, однако, как предполагает ошибка, слой Conv1D
, такой как слой LSTM
, ожидает 3D-ввод формы (None, n_steps, n_features)
.Таким образом, один из способов решения этой проблемы состоит в том, чтобы передать return_sequences=True
слою LSTM, чтобы иметь выходные данные каждого временного шага, и, следовательно, его выходные данные были бы 3D:
model.add(LSTM(100, activation = 'relu', return_sequences=True))
В качестве альтернативы, вы можете поместить Conv1D
и MaxPooling1D
слоев перед слоем LSTM
(что может быть даже лучше, чем текущая архитектура, поскольку одно использование Conv1D
плюс объединяющие слои должно уменьшить размер входных данных слоя LSTM и, следовательно, уменьшить вычислительную сложность):
model.add(Conv1D(64, kernel_size = 5, activation = 'relu'))
model.add(MaxPooling1D())
model.add(LSTM(100, activation = 'relu'))