Вы можете добавить 2Dconvnet-слои следующим образом:
model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
, где
model.add(Conv2D(<feature maps>, (<kernel size>), input_shape=(<imput-tensor-shape)))
Но будьте осторожны, 2Dconfnet-слои математически отличаются от плотных слоев, поэтому их сложно сложить. Чтобы сложить 2Dconvnet-слои с плотными слоями, вам придется сгладить их (обычно вы делаете это в конце, чтобы получить «полностью подключенный слой»):
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Activation('relu'))
Вы найдете много хороших уроков по созданию сетей с керами. Этот , например, фокусируется на распознавании изображений. Приведенные выше примеры взяты из этой статьи.
Чтобы узнать, чем занимается сверточная сеть, я бы порекомендовал вам эту статью .
Edit:
Но я разделяю мнение, что для вашего примера может быть нецелесообразно использовать слои 2DConvnet. Ваша структура данных кажется «плоской», и 2D-сети могут иметь смысл только в том случае, если у вас есть несколько многомерных тензоров в качестве входных данных.