Как выбрать количество фильтров в CNN - PullRequest
1 голос
/ 06 мая 2020

Я настраиваю архитектуру своей CNN, чтобы повысить производительность набора данных CIFAR-10.

Хотя установка большинства гиперпараметров более или менее проста, выбор количества фильтров для каждого слой кажется неоднозначным.

Какова правильная структура / интуиция для установки количества фильтров для начала и количества фильтров для следующих слоев в CNN?

1 Ответ

1 голос
/ 06 мая 2020

Нет прямого метода узнать количество фильтров, которые нужно использовать для вашей модели. Однако вы можете протестировать некоторые значения, например 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 , чтобы визуализировать свои результаты и выбрать лучшую архитектуру, которая соответствует вашим данным.

Обучение может занять больше времени, так что подумайте при сохранении моделей во время тренировочного процесса.

Надеюсь, это вам поможет.

...