Ошибка возникает из-за отсутствия достаточной информации о том, как установить размер ядра для слоя свертки и как работает максимальный пул. Я бы посоветовал взглянуть на this , где вы можете найти подробную информацию о свертке и о том, как установить размер ядра. А также для пула .
А для вашей реализации,
model = Sequential()
model.add(Conv2D(8, kernel_size=(5,5), activation='tanh', input_shape=(140,140,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(8, kernel_size=(5,5), activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(8, kernel_size=(5,5), activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(8, kernel_size=(5,5), activation='tanh'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(1000, activation='tanh'))
model.add(Dense(123, activation='softmax'))
model.summary()
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (None, 136, 136, 8) 208
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 68, 68, 8) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 64, 64, 8) 1608
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 32, 32, 8) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 28, 28, 8) 1608
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 14, 14, 8) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 10, 10, 8) 1608
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 5, 5, 8) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 200) 0
_________________________________________________________________
dense_1 (Dense) (None, 1000) 201000
_________________________________________________________________
dense_2 (Dense) (None, 123) 123123
=================================================================
Total params: 329,155
Trainable params: 329,155
Non-trainable params: 0
_________________________________________________________________
Обновление
Для вашей реализации необходим пользовательский слой, который вы можете увидеть в этом репозитории github. Я не уверен, что он полностью разработан или нет.
Вам необходимо загрузить этот файл или, возможно, клонировать полный репозиторий и импортировать, как этот,
from Conv2D121 import Conv2D121
model = Sequential()
model.add(Conv2D(8, (5, 5), padding='valid',
input_shape=(140, 140, 1)))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2,2), strides=2, padding='valid'))
model.add(Conv2D121(8, (5, 5), padding='valid'))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2,2), strides=2, padding='valid'))
model.add(Conv2D121(8, (5, 5), padding='valid'))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2,2), strides=2, padding='valid'))
model.add(Conv2D121(8, (5, 5), padding='valid'))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2,2), strides=2, padding='valid'))
model.add(Flatten())
model.add(Dense(1000, activation='tanh'))
model.add(Dense(123, activation='softmax'))
model.summary()