一文弄清池化层(pooling)的作用
创作时间:
作者:
@小白创作中心
一文弄清池化层(pooling)的作用
引用
CSDN
1.
https://blog.csdn.net/festaw/article/details/136683513
池化层是什么?
池化层的本质是一个下采样过程。在数据经过卷积操作后,维度会越来越高,虽然特征图的变化不大,但参数量却迅速增加,这会导致模型训练困难并容易产生过拟合现象。因此,将池化层置于连续的卷积层之间,可以压缩数据量和参数,减少过拟合的风险。池化层通过聚合统计一个像素点及其周围像素点的信息,来缩减特征图的尺寸,从而减少最终全连接层中的参数数量,加快模型的计算速度。常见的池化层类型包括最大池化、均值池化和空间金字塔池化等。如图所示,最大池化操作选择某个像素点相邻区域内的最大值,而均值池化操作则计算相邻区域内的平均值。
池化的作用
池化操作后的结果相比其输入缩小了。池化层的引入是仿照人的视觉系统对视觉输入对象进行降维和抽象。在卷积神经网络过去的工作中,研究者普遍认为池化层有如下三个功效:
特征不变性:池化操作使模型更加关注是否存在某些特征,而不是特征的具体位置。这种不变性包括平移不变性、旋转不变性和尺度不变性。例如,对于平移不变性,输入为(1, 5, 3)时,最大池化会取5;如果将输入右移一位得到(0, 1, 5),输出的结果仍将为5。对于尺度变换,如果原先的神经元在最大池化操作后输出5,那么经过尺度变换后,最大池化操作在该神经元上很大概率的输出仍是5。
特征降维(下采样):池化相当于在空间范围内做了维度约减,从而使模型可以抽取更加广范围的特征。同时减小了下一层的输入大小,进而减少计算量和参数个数。
在一定程度上防止过拟合,更方便优化:
- 实现非线性(类似ReLU)。
- 扩大感受野。
示例代码
import numpy as np
# 定义池化层类
class PoolingLayer:
def __init__(self, pool_size=(2, 2), stride=2, mode='max'):
self.pool_height, self.pool_width = pool_size
self.stride = stride
self.mode = mode
def forward(self, input):
batch_size, input_height, input_width, num_channels = input.shape
output_height = (input_height - self.pool_height) // self.stride + 1
output_width = (input_width - self.pool_width) // self.stride + 1
pooled_output = np.zeros((batch_size, output_height, output_width, num_channels))
for b in range(batch_size):
for c in range(num_channels):
for i in range(output_height):
for j in range(output_width):
if self.mode == 'max':
pooled_output[b, i, j, c] = np.max(input[b, i*self.stride:i*self.stride+self.pool_height,
j*self.stride:j*self.stride+self.pool_width, c])
elif self.mode == 'average':
pooled_output[b, i, j, c] = np.mean(input[b, i*self.stride:i*self.stride+self.pool_height,
j*self.stride:j*self.stride+self.pool_width, c])
return pooled_output
# 测试池化层
if __name__ == "__main__":
# 创建输入特征图
input_feature_map = np.random.rand(1, 4, 4, 3) # 输入特征图大小为4x4,通道数为3,一个样本
# 创建池化层对象
pooling_layer = PoolingLayer(pool_size=(2, 2), stride=2, mode='max')
# 进行前向传播
pooled_output = pooling_layer.forward(input_feature_map)
# 输出池化后的特征图
print("池化后的特征图:")
print(pooled_output)
热门推荐
全国计算机等级考试三级网络技术考试大纲
牙龈化脓一般几天能好
C1驾照考试内容及合格标准详解
想运动又怕伤膝盖?这3种运动很“友好”
轻松放倒宝来汽车后排座椅,提升空间利用率!步骤详解!
STM32H7通用定时器计数功能的使用
重庆一小区发通知捕杀流浪猫?物业回应:表述欠缺考虑,已撤回通知
瘦子如何增肌增重?附详细健身和饮食计划
睡眠革命:健康揭秘高质量睡眠的秘密,让好梦伴你每一夜!
《黑神话:悟空》建模图集揭秘:巨灵神和土地庙背后的艺术与技术
防水涂层厚度的选择与施工要求
用了50年才换新列车?伦敦地铁究竟有多老?一文带你了解世界最早的地铁系统!
3D打印创意无限:从作品展示到实用技巧详解
文山学院构建“1234”模式 践行劳动教育“理实”结合
明日方舟终末地战斗机制详解:破防条、元素反应与AI控制
黛力新遇上这些食物,后果堪忧!90%患者竟不知此禁忌!
Intel 14代带K处理器温度过高?微星B760/Z790主板CEP降压指南
顾姓的起源与传承:昆吾氏樊后裔的故事
这些年,外资在A股玩了个寂寞
切不完的肿物,不是恶性肿瘤,而是这种病
梦见屎的周公解梦解析:多重象征意义与现实启示
全方位指南:海南文昌一日游精品路线规划与旅游贴士
新手养狗指南:七种适合入门的小型犬推荐
什么是电动机负载率?详解其定义、计算方法及在电动汽车中的应用
@大龄就业人员 找工作遇到困难?不妨试试这些方法
SaaS产品如何解决定制化需求
乳牙是拔掉还是自然脱落好
刘永谋:AI是否导致人类灭绝,要看我们如何发展和运用AI
世界语是什么
螺栓扭矩系数影响因素的试验研究