Использование CNN для данных последовательности может быть немного сложнее в настройке.По моему опыту, CNN достигают результатов рядом с RNN (GRU и LSTM), но CNN гораздо быстрее для вычисления.
Во-первых, убедитесь, что ваши данные сформированы так, как Conv1D
ожидает: (instances, time steps, predictors)
.
X_cnn = X.reshape(X.shape[0], X.shape[1] // predictors, predictors)
Тогда синтаксис будет:
model_cnn = Sequential()
model_cnn.add(layers.Conv1D(A, B, activation = 'relu',
input_shape = (X_cnn.shape[1], X_cnn.shape[2])))
model_cnn.add(layers.Flatten())
model_cnn.add(layers.Dense(1))
, где A
- это количество нейронов, а B
- это количество временных шагов, которые следует учитывать.Обратите внимание на слой Flatten()
после слоя Conv1D
.Надеюсь, это поможет вам начать.