最大池化太少或太多?

数据挖掘 机器学习 深度学习 神经网络 美国有线电视新闻网 卷积神经网络
2022-02-16 05:52:41

我正在CNNKeras 中创建一个model.summary()显示:

Using TensorFlow backend.
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 62, 62, 32)        896       
_________________________________________________________________
activation_1 (Activation)    (None, 62, 62, 32)        0         
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 29, 29, 64)        18496     
_________________________________________________________________
activation_2 (Activation)    (None, 29, 29, 64)        0         
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 14, 14, 64)        0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 12, 12, 64)        36928     
_________________________________________________________________
activation_3 (Activation)    (None, 12, 12, 64)        0         
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 6, 6, 64)          0         
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 4, 4, 64)          36928     
_________________________________________________________________
activation_4 (Activation)    (None, 4, 4, 64)          0         
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 2, 2, 64)          0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 256)               0         
_________________________________________________________________
dropout_1 (Dropout)          (None, 256)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 128)               32896     
_________________________________________________________________
activation_5 (Activation)    (None, 128)               0         
_________________________________________________________________
dropout_2 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 17)                2193      
_________________________________________________________________
activation_6 (Activation)    (None, 17)                0         
=================================================================
Total params: 128,337
Trainable params: 128,337
Non-trainable params: 0

输入是大小的图像64×64. 如何确定最大池化层是否过多、过少或恰到好处?这个页面解释了它,但我无法从 Kera 的输出中得到它。

1个回答

单独使用最大池并不是一个好主意。原因是通过使用它,你忽略了75% 的信息。如果您的输入是一个非常小的模式的信号,就像您提到的数字一样,最好不要使用 max-pool 那么多。尽管使用最大池化为输入中的对象增加了相对空间不变性,并且对分类任务很有用,但现在使用它的主要原因是减少要训练的参数数量。例如,对于属于R224×224,由于显着减少了训练参数的数量,将它们用于某些层是明智的。对于尺寸较小的图像,输入信号本身具有较少数量的条目、特征,并且通过使用最大池,您主要丢弃了对于泛化可能是必要和突出的信息。你实际上是在耸耸肩!