在某些情况下,在CNN中省略池化层是否有意义?

时间:2017-11-01 11:53:32

标签: machine-learning neural-network computer-vision conv-neural-network max-pooling

我知道通常的CNN包括卷积层和池层。池化层使输出更小,这意味着更少的计算,并且它们也使它以某种方式变换不变,因此来自内核过滤器的特征的位置可以在原始图像中稍微移位。

但是当我不使用合并图层时会发生什么?原因可能是我想要原始图像中每个像素的特征向量,因此卷积层的输出必须与图像的大小相同,只需要有更多的通道。这有意义吗?这些特征向量中是否仍然存在有用的信息,或者CNN中的池化层是否必要?或者是否有一些方法可以获得具有合并图层的单个像素的特征向量?

1 个答案:

答案 0 :(得分:0)

卷积特征地图,早期和后期的特征地图,包含很多的有用信息。许多有趣和有趣的应用程序完全基于来自预训练的CNN的特征图,例如, Google Deep DreamNeural Style。 VGGNet的一个常见选择就是预先训练好的模型。

还要注意一些CNN,例如All Convolutional Net,用卷积替换池化层。他们仍然通过跨步进行下采样,但完全避免了maxpool或avgpool操作。这个想法已经变得流行并应用于许多现代CNN架构中。

唯一的困难是CNN没有下采样可能更难训练。你需要足够的训练数据,其中标签是图像(我假设你有),你还需要一些聪明的丢失功能来进行反向传播。当然,你可以从像素差异的L2范数开始,但它实际上取决于你正在解决的问题。

我的建议是采用现有的预训练CNN(例如VGGNet for tensorflow),只保留前两个卷积层,直到第一次下采样。这是尝试这种架构的快速方法。