畅游人工智能之海 | Keras教程篇之池化层

本文深入解析Keras中的池化层,包括最大池化、平均池化和全局池化,阐述其在卷积神经网络中的作用,如压缩数据、防止过拟合,并介绍了不同维度的池化层操作。

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

各位读者大家好,上周我们详细讲解了Keras的核心网络层,相信大家已经对核心网络层的作用以及使用方法有了一个清晰的认识。这周我们将要开展池化层和卷积层的讲解了,这篇文章就是对池化层的讲解。

首先我们要统一说一下池化层的作用。池化层放在连续的卷积层中间,用于压缩数据和参数的量,防止过拟合。其具体操作与卷积层的操作基本相同,只不过池化层的卷积核只取对应位置的最大值、平均值等(最大池化、平均池化),且不经过反向传播的修改。总结一下,作用有两个:①invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度);②保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力。

池化层操作又分为平均池化和最大池化。根据相关理论,特征提取的误差主要来自两个方面:①邻域大小受限造成的估计值方差增大;②卷积层参数误差造成估计均值的偏移。一般来说,平均池化能减小第一种误差,更多地保留图像的背景信息,最大池化能减小第二种误差,更多地保留纹理信息。

池化层的操作方式我们可以通过以下的图片来清晰地了解。

最大池化图示

平均池化图示

全局池化操作即是对指定的张量的全局数据进行最大池化或者平均池化操作。池化层中的1D是对时序数据进行池化操作,2D是对空间数据进行池化操作,3D是对空间或时空间数据进行池化操作。

 

MaxPooling1D层

keras.layers.MaxPooling1D(
    pool_size=2, #整数,最大池化的窗口大小
    strides=None, #整数,或者是None。作为缩小比例的因数。例如,2会使得输入张量缩小一半。如果是None,那么默认值是pool_size。
    padding='valid', #"valid" 或者 "same"(区分大小写)
    data_format='channels_last' #字符串,channels_last(默认)或 channels_first之一。表示输入各维度的顺序。channels_last对应输入尺寸为(batch, steps, features),channels_first对应输入尺寸为(batch, features, steps)
)

输入尺寸:

如果 data_format='channels_last',输入为 3D 张量,尺寸为:(batch_size, steps, features)

如果data_format='channels_first',输入为 3D 张量,尺寸为:(batch_size, features, steps)

输出尺寸:

如果 data_format='channels_last',输出为 3D 张量,尺寸为:(batch_size, downsampled_steps, features)

如果data_format='channels_first',输出为 3D 张量,尺寸为:(batch_size, features, downsampled_steps)

MaxPooling2D

keras.layers.MaxPooling2D(
    pool_size=(2, 2), #整数,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值