Куда вы хотите добавить слой конвоя? Conv2D получает (N, H, W, C) в качестве входов и выходов, где N - размер пакета, H - высота, W - ширина, а C - размер канала.
В вашей сети есть все ( N, C) тензор. Итак, вам нужно изменить форму вектора на изображения или Свести изображения в вектор.
Вот пример, который получает (NHW C) тензор, поэтому вам не нужен x_train.reshape для сглаживания. Во многих известных сетях, таких как VGG, Re sNet имеет сначала слой Conv, а наконец - Dense. Он нацелен на получение объекта из слоев конвоя и прогнозирование класса по плотному слою.
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Conv2D, Flatten
from keras import regularizers
import numpy as np
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# MNIST shape has lacks of channels, so add it. MNIST is gray scale so channel size is 1.
# (60000, 28, 28) -> (60000, 28, 28, 1)
# If you have color image, it shoud be 3 channels, RGB: [BATCH_SIZE, H, W, 3]
x_train = np.expand_dims(x_train, axis=-1)
x_test = np.expand_dims(x_test, axis=-1)
num_classes = 10
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
model_3 = Sequential()
model_3.add(Conv2D(32, kernel_size=2, padding='same', activation='relu', input_shape=(28, 28, 1)))
model_3.add(Conv2D(64, kernel_size=2, padding='same', activation='relu'))
model_3.add(Flatten())
model_3.add(Dense(256, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model_3.add(Dropout(0.2))
model_3.add(Dense(128, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model_3.add(Dropout(0.2))
model_3.add(Dense(64, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model_3.add(Dropout(0.2))
model_3.add(Dense(10, activation='softmax'))
model_3.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adam(),
metrics=['accuracy'])
history = model_3.fit(
x_train, y_train,
batch_size=128,
epochs=250,
verbose=1,
validation_data=(x_test, y_test))
Для изменения формы: https://keras.io/layers/core/
И имеется образец Conv2D MNIST. https://github.com/keras-team/keras/blob/master/examples/mnist_cnn.py