ваши данные находятся в формате 3d, и это все, что вам нужно для загрузки conv1d или LSTM. если ваша цель - 2D, не забудьте установить return_sequences = False в вашей последней ячейке LSTM.
использование сглаживания перед LSTM является ошибкой, потому что вы разрушаете трехмерность
обратите внимание также на операция объединения, чтобы не иметь отрицательного измерения времени для уменьшения (я использую 'одинаковые' отступы в свертке выше, чтобы избежать этого)
ниже - пример задачи двоичной классификации
n_sample, time_step, n_features = 288, 3, 393
X = np.random.uniform(0,1, (n_sample, time_step, n_features))
y = np.random.randint(0,2, n_sample)
model = Sequential()
model.add(Conv1D(128, 5, padding='same', activation='relu',
input_shape=(time_step, n_features)))
model.add(MaxPooling1D())
model.add(LSTM(64, return_sequences=True))
model.add(LSTM(16, return_sequences=False))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X,y, epochs=3)