在卷积层之间插入池化层的时机

通常,我们会在卷积层之间插入最大池化层。其主要目的是“总结”卷积层的特征。但决定何时插入池化层却是一个难题。我对此有一些疑问:

  1. 如何决定在插入最大池化层之前需要多少个卷积层?以及卷积层太多或太少会有什么影响?

  2. 由于最大池化会减小尺寸,如果我们想使用非常深的网络,就不能进行太多的最大池化操作,否则尺寸会变得太小。例如,MNIST数据集的输入尺寸仅为28×28,但我确实看到有些人用非常深的网络来进行实验,这样可能会导致尺寸变得非常小?实际上,当尺寸太小时(极端情况,1×1),它就像一个全连接层,在这种情况下进行卷积似乎没有意义。

我知道没有黄金法则,但我只是想弄清楚背后的基本直觉,以便在实现网络时做出合理的选择


回答:

  1. 你说的对,没有一种最佳的方法,就像没有一种最佳的滤波器尺寸或最佳的神经网络架构一样。

    VGG-16在池化层之间使用2-3个卷积层(如下图),VGG-19最多使用4层,…

    vgg-16

    …而GoogleNet应用了大量的卷积(如下图),在池化层之间,有时甚至与池化层并行进行。

    google-net

    显然,每增加一层都会增加网络的灵活性,使其能够逼近更复杂的目标函数。另一方面,这也需要更多的计算量来进行训练,但通常可以使用1×1卷积技巧来节省计算量。你的网络需要多少灵活性?这在很大程度上取决于数据,但通常2-3层对于大多数应用来说已经足够灵活,增加更多的层不会影响性能。没有比交叉验证不同深度的模型更好的策略了。(图片来自这篇博文

  2. 这是一个已知的问题,我想在这里提到一种特别的技术来处理过于激进的下采样:分数池化。其思想是为层中的不同神经元应用不同尺寸的感受野,以任何比例(90%、75%、66%等)减小图像尺寸。

    fmp

    这是在小图像(如MNIST数字)上构建更深层网络的一种方法,展示了非常好的准确率(0.32%的测试误差)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注