卷积层的维度变化

博客转载了一篇来自https://www.cnblogs.com/BlueBlueSea/p/11059119.html的内容,未提及具体信息,但标签为人工智能,推测与人工智能领域相关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import keras
from keras import Sequential

model = Sequential()
model.add(keras.layers.Conv2D(input_shape=(28, 28, 1), kernel_size=(5,5), filters=20, activation='relu'))
model.add(keras.layers.MaxPool2D(pool_size=(2,2), strides=2, padding='same'))

model.add(keras.layers.Conv2D(kernel_size=(5,5), filters=50, activation='relu', padding='same'))
model.add(keras.layers.MaxPool2D(pool_size=(2,2), strides=2, padding='same'))

model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(500, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))

##>>> model.layers[0].output_shape
##(None, 24, 24, 20)
##>>> model.layers[1].output_shape
##(None, 12, 12, 20)
##>>> model.layers[2].output_shape
##(None, 12, 12, 50)
##>>> model.layers[3].output_shape
##(None, 6, 6, 50)
##>>> model.layers[4].output_shape
##(None, 1800)
##>>> model.layers[5].output_shape
##(None, 500)
##>>> model.layers[6].output_shape
##(None, 10)

//终于弄明白了。

转载于:https://www.cnblogs.com/BlueBlueSea/p/11059119.html

### 卷积层输出尺寸计算 对于输入图像大小 \( W \times H \),当应用卷积核大小为 \( K_w \times K_h \) 的滤波器,步幅(stride)设为 \( S \),填充(padding)设置为 \( P \) 时,经过一次二维卷积操作后的特征图(feature map)宽度和高度可以按照下面给出的公式来计算[^1]: \[ W_{\text{out}} = \left( \frac{W - K_w + 2P}{S} \right)+1 \] \[ H_{\text{out}} = \left( \frac{H - K_h + 2P}{S} \right)+1 \] 其中: - 如果 padding 设置得当,则可以使输出尺寸保持不变或仅减少一点;反之,如果没有任何填充 (即 \( P=0 \)) 并且步长较大,那么每次通过这样的卷积层都会显著减小空间维度。 为了更直观理解这一过程的影响,在实践中通常会观察到如下几种情况下的变化趋势: - **无填充情况下**:随着层数增加以及更大范围的感受野(receptive field),即使只采用较小尺度的内核(比如3×3),也会逐渐缩小激活映射的空间分辨率。 - **有适当填充的情况下**:可以通过设定合适的padding值使得每层处理前后图片边界信息得以保留,从而维持相对稳定的输出尺寸直到特定阶段才开始收缩。 ```python def calc_output_size(input_size, kernel_size, stride, padding): """ 计算给定参数下卷积运算之后的输出尺寸 参数: input_size : 输入张量的空间尺寸 (宽/高) kernel_size: 过滤器窗口大小 stride : 步长 padding : 填充数量 返回: 输出张量的空间尺寸 """ output_size = ((input_size - kernel_size + 2 * padding) / stride) + 1 return int(output_size) # 示例调用 print(calc_output_size(28, 5, 1, 0)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值