Machine learning 在一行中添加相同的CONV2d图层与继续添加过滤器大小增加的图层相比是否有好处

Machine learning 在一行中添加相同的CONV2d图层与继续添加过滤器大小增加的图层相比是否有好处,machine-learning,keras,deep-learning,computer-vision,Machine Learning,Keras,Deep Learning,Computer Vision,在一行中添加相同的图层是否有如下好处: model.add(layers.Conv2D(32, (3, 3), activation='relu')) model.add(layers.Conv2D(32, (3, 3), activation='relu')) model.add(layers.Conv2D(32, (3, 3), activation='relu')) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model

在一行中添加相同的图层是否有如下好处:

model.add(layers.Conv2D(32, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))
与继续增加过滤器大小不同,如下所示:

model.add(layers.Conv2D(32, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))
添加相同的层是否常见,因为继续增加过滤器的数量成本更高


当我在一行中使用相同的图层时,我获得了更高的准确性,但当我浏览示例和书籍时,我很少遇到添加相同图层的作者,我只是好奇为什么。这个问题很好,但答案取决于具体情况

  • 首先,在应用卷积时,了解图像的尺寸非常重要。有几篇论文证明,它们在早期层中没有使用大量的过滤器,因为早期层捕获边缘/颜色/形状或类似信息。因此,在第一层中使用128个滤波器而不是32个滤波器可能不会很好地提高总体精度

  • 由于前面的观察结果,随着神经网络的加深,滤波器的数量增加,因为可以捕获更多特定于任务的信息。大多数成熟的图像分类体系结构增加了卷积层中滤波器数量的两倍

  • 这在很大程度上取决于数据集,这就是为什么不能做出一般性陈述的原因,尽管前两个观察结果已经通过经验和统计证明

    您可以开始玩卷积,添加/删除层,如果添加了Dropout或BatchNormalization,则可以看到改进(或不改进),但我建议您检查已经建立的网络

    不能保证体系结构X或Y工作得更好。现在的趋势是使用具有跳跃连接的体系结构,以确保端到端的梯度流不会丢失信息。尝试使用ResNet50/101(所有变体)、exception、DenseNet和SENetwork


  • 谢谢你,Timbus!