Нет прямого метода узнать количество фильтров, которые нужно использовать для вашей модели. Однако вы можете протестировать некоторые значения, например 16,32,64,128,256 ...
Есть идея автоматизировать этот процесс, который я использую для нахождения нужного количества сверточных слоев и фильтров для нейронной сети.
conv_layers = [3, 4, 5]
units = [32,64,128]
for conv_layer in conv_layers:
for unit in units:
Name = "CNN-LSTM-{}convl--{}LSTM-{}-time".format(conv_layer,unit,int(time.time()))
model = Sequential()
model.add(Input(shape=(IMG_HEIGHT, IMG_WIDTH, 3)))
model.add(Reshape(target_shape=(IMG_HEIGHT, IMG_WIDTH * 3)))
model.add(Conv1D(filters=64, kernel_size=3, padding="same", activation='relu',
input_shape=(IMG_HEIGHT, IMG_WIDTH * 3), data_format='channels_last'))
for i in range(conv_layer-1):
model.add(Conv1D(filters=64, kernel_size=3, padding="same", activation='relu'))
model.add(MaxPooling1D(pool_size=3))
model.add(Conv1D(filters=128, kernel_size=3, padding="same", activation='relu'))
model.add(Conv1D(filters=128, kernel_size=3, padding="same", activation='relu'))
model.add(LSTM(unit, activation='relu'))
model.add(BatchNormalization())
model.add(Flatten())
model.add(Dense(4, activation='softmax'))
model.build(input_shape=(batch_size, IMG_HEIGHT, IMG_WIDTH, 3))
model.summary()
После тренировки вы можете использовать Tensorboard , чтобы визуализировать свои результаты и выбрать лучшую архитектуру, которая соответствует вашим данным.
Обучение может занять больше времени, так что подумайте при сохранении моделей во время тренировочного процесса.
Надеюсь, это вам поможет.