0
点赞
收藏
分享

微信扫一扫

【单片机】STM32单片机,定时器,多路PWM,TIM1、TIM2、TIM3、TIM4,STM32F103

王栩的文字 2023-06-29 阅读 92

目录

概念

两种主要池化方式

最大池化

平均池化

尺寸变化过程

池化优点

总结


概念

池化(Pooling),用于减小卷积神经网络(CNN)或其他类型神经网络的特征图(Feature Map)的尺寸,从而减少计算量、降低模型复杂性并提高模型的鲁棒性。

池化操作通过对输入特征图的局部区域进行汇聚(或聚合)来实现尺寸的缩小。具体而言,池化操作将输入特征图的每个局部区域(通常是非重叠的)映射到一个输出值,这个输出值可以是局部区域中的最大值(最大池化)或平均值(平均池化)。池化操作通常包括两个主要参数:池化窗口大小(池化核大小)和步幅(stride)。

两种主要池化方式

最常见的池化操作是最大池化(Max Pooling)和平均池化(Average Pooling)。

这两种池化操作都可以在网络中引入平移不变性,即对于输入特征的小偏移,池化操作的输出保持不变。

最大池化

池化过程类似于卷积过程,如上图所示,表示的就是对一个 4X4 feature map邻域内的值,用一个 2X2 的filter,步长为2进行‘扫描’,选择最大值输出到下一层,这叫做 Max Pooling。

max pooling常用的 S=2,f=2 的效果:特征图高度、宽度减半,通道数不变。

平均池化

如上图所示,表示的就是对一个 4X4 feature map邻域内的值,用一个 2X2 的filter,步长为2进行‘扫描’,计算平均值输出到下一层,这叫做 Mean Pooling。

尺寸变化过程

import torch
import torch.nn as nn

input_features = torch.randn(1, 1, 28, 28)  # 输入特征图大小为 28x28
max_pool = nn.MaxPool2d(kernel_size=2, stride=2)  # 池化窗口大小为 2x2,步幅为 2
# avg_pool = nn.AvgPool2d(kernel_size=2, stride=2)  # 池化窗口大小为 2x2,步幅为 2
output = max_pool(input_features)
print(output.size())

当将一个 1x1x28x28 的输入特征图应用最大池化操作时,可以通过使用池化窗口大小为 2x2 和步幅为 2 来实现输出尺寸为 torch.Size([1, 1, 14, 14]) 的特征图。

这是因为最大池化操作的池化窗口大小为 2x2,即在每个窗口中选择一个最大值作为输出值。同时,步幅为 2 表示在应用池化操作时,每次移动窗口的位置距离为 2。

首先,对于输入特征图的高度和宽度,由于池化窗口大小为 2x2,每次移动的步幅也为 2,因此高度和宽度都会减半。这将导致输出特征图的高度和宽度分别为原来的一半。

其次,由于输入特征图的通道数为 1,所以输出特征图的通道数也是 1,保持不变。

因此,最终的输出特征图的大小为 torch.Size([1, 1, 14, 14])。

池化优点

池化操作具有以下几个优点:

总结

需要注意的是,池化操作会减少特征图的细节信息,因此在某些情况下可能会导致信息丢失。在最新的研究中,有些模型在某些层次上已经开始避免使用池化操作,而是采用卷积操作来进行降维和尺寸缩减。这些新的方法通常被称为"strided convolutions"(步幅卷积)或"convolutional stride"(卷积步幅),它们在一定程度上取代了传统的池化操作。这些新方法的目标是通过卷积操作同时实现特征提取和尺寸缩减的效果,以避免信息丢失。

举报

相关推荐

0 条评论