Используя TensorFlow в Python, я создаю нейронную сеть, которая имеет одномерный массив в качестве входных данных. Я хотел бы добавить сверточный слой в сеть, но не могу заставить его работать.
Мои тренировочные данные выглядят примерно так:
n_samples = 20
length_feature = 10
features = np.random.random((n_samples, length_feature))
labels = np.array([1 if sum(e)>5 else 0 for e in features])
Если я создаю такую нейронную сеть, как эта
model = keras.Sequential([
keras.layers.Dense(10, activation='relu', input_shape=(length_feature, )),
keras.layers.Dense(2, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(features, labels, batch_size=5, validation_split = 0.2, epochs=10)
, и это прекрасно работает. Но если я добавлю сверточный слой, подобный этому
model = keras.Sequential([
keras.layers.Dense(10, activation='relu', input_shape=(length_feature, )),
keras.layers.Conv1D(kernel_size = 3, filters = 2),
keras.layers.Dense(2, activation='softmax')
])
, я получу ошибку
ValueError: Input 0 of layer conv1d_4 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 10]
Как я могу добавить сверточный слой в мою нейронную сеть?