为什么我们使用MaxPooling 2x2?我们可以使用任何其他尺寸,如3x3或5x5吗?以及如何选择在什么场景中选择哪



伟大,

我在YouTube、谷歌上到处搜索过,也读过一些文章和研究论文,但似乎找不到我问题的确切答案

我对卷积神经网络有一些问题,我对这个问题感到困惑:为什么我们使用MaxPooling大小为2x2,为什么我们不使用任何其他大小,如3x3、4x4。。。nxn(当然小于输入的大小(,我们甚至可以使用2x2以外的任何其他吗?我的另一个问题是:为什么我们大多数时候都使用MaxPooling?这取决于图像吗?例如,如果我们有一些嘈杂的图像,那么使用MaxPooling是否合适,或者我们应该使用任何其他类型的池?

谢谢!

MaxPool2D通过为输入的每个通道在输入窗口(大小由pool_size定义(上取最大值,沿其空间维度(高度和宽度(对其输入进行下采样。例如,如果我在此阵列上应用2x2MaxPooling2D

array = np.array([
[[5],[8]],
[[7],[2]]
])

那么结果将是8,这是该数组中元素的最大值
另一个例子是,如果我在此阵列上应用2x2MaxPooling2D

array = tf.constant([[[1.], [2.], [3.]],
[[4.], [5.], [6.]],
[[7.], [8.], [9.]]])

那么输出将是这样的:

([
[[5.], [6.]],
[[8.], [9.]]
])

MaxPooling2D在这里所做的是,它滑动了一个2x2的窗口,并取了它的最大值,导致输入数组的高度和宽度减半。如果你仍然对它的工作方式有任何问题,请从keras和SO 中查看

现在很清楚MaxPool2D对输入进行了下采样,让我们回到您的问题——

为什么所有地方都使用2x2 MaxPooling,而不是3x3或4x4?

好吧,原因是它减少了数据,在形状为(3,3,1(的矩阵上应用3x3MaxPooling2D将产生(1,1,1(矩阵,在形状(3,3,3(的矩阵中应用2x2MaxPooling2D将产生(2,2,1(矩阵。显然,(2,2,1(矩阵比形状为(1,1,1(的矩阵可以保留更多的数据。通常情况下,应用池大小大于2x2的MaxPooling2D操作会导致大量数据丢失,因此2x2是更好的选择。这就是为什么,你可以看到2x2MaxPooling2D"无处不在",比如在ResNet50、VGG16等中

相关内容

最新更新