【问题标题】:How to select the number of filters in CNN如何在CNN中选择过滤器的数量
【发布时间】:2020-05-06 19:00:51
【问题描述】:

我正在调整 CNN 的架构以提高 CIFAR-10 数据集的性能。

虽然设置大多数超参数或多或少很简单,但为每一层选择过滤器的数量似乎很模糊。

什么是正确的框架/直觉来设置开始的过滤器数量和 CNN 中后续层的过滤器数量?

【问题讨论】:

    标签: machine-learning deep-learning conv-neural-network


    【解决方案1】:

    没有直接的方法可以知道要用于您的模型的过滤器数量。但是您可以测试一些值,例如 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 可视化您的结果并选择最适合您的数据的架构。

    这可能需要更多的训练时间,因此请考虑在训练过程中保存模型。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 2016-07-14
      • 2015-10-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 2017-05-26
      • 2017-05-25
      相关资源
      最近更新 更多