Keras中MaxPooling2D的stride设为None时是否会根据池化核大小动态调整?
Keras MaxPooling2D层strides为None时的输出维度规则
核心原因
Keras中MaxPooling2D层的strides参数设为None时,会直接使用池化核尺寸pool_size作为步长取值,而非默认使用(1,1),这是和你原有认知不符的核心原因。
对应现象验证
你观测到的所有结果都符合该默认规则:
- 使用(2,2)池化核、
strides=None时,步长自动取(2,2),因此输出尺寸和手动设置strides=(2,2)完全一致 - 调整池化核为(3,3)、
strides=None时,步长自动取(3,3),因此输出维度会缩小为原尺寸的1/3左右
池化层输出维度计算公式(默认padding='valid'无填充场景)
输出高度 = floor( (输入高度 - 池化核高度) / 步长高度 + 1 ) 输出宽度 = floor( (输入宽度 - 池化核宽度) / 步长宽度 + 1 )
以你使用的112×92输入尺寸为例:
- (2,2)池化核、步长(2,2):输出尺寸为56×46,长宽各缩小一半
- (3,3)池化核、步长(3,3):输出尺寸为37×30,约为原尺寸的1/3
如果使用padding='same'(填充到输入输出尺寸一致),步长的默认取值规则不变,仅计算公式会加入填充尺寸的影响。
内容的提问来源于stack exchange,提问作者Shubham Agrawal
相关产品推荐
相关产品推荐

