像下面这样连续添加相同的图层是否有好处:
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(所有变体),Xception,DenseNet,SENetwork。
关于machine-learning - 连续添加相同的CONV2d层有好处,而不是继续添加滤镜尺寸增加的层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56590192/