1. 池化层

     在卷积网络中, 通常会在卷积层之间增加池化(Pooling) 层, 以降低特征图的参数量, 提升计算速度, 增加感受野, 是一种降采样操作。池化是一种较强的先验, 可以使模型更关注全局特征而非局部出现的位置, 这种降维的过程可以保留一些重要的特征信息, 提升容错能力, 并且还能在一定程度上起到防止过拟合的作用

    在物体检测中, 常用的池化有最大值池化(Max Pooling) 与平均值池化(Average Pooling) 。 池化层有两个主要的输入参数, 即核尺寸kernel_size与步长stride。 如图3.7所示为一个核尺寸与步长都为2的最大值池化过程, 以左上角为例, 9201526进行最大值池化, 保留26

神经网络基本组成 - 池化层、Dropout层、BN层、全连接层 13

 

 

 下面是PyTorch对于池化层的实现。

 1 import torch
 2 from torch import nn
 3 
 4 max_pooling = nn.MaxPool2d(2, stride=2)
 5 aver_pooling = nn.AvgPool2d(2, stride=2)
 6 
 7 input = torch.randn(1, 1, 4, 4)
 8 print(input)
 9 >> tensor([[[[ 1.2237, -0.8173, -0.2594,  0.1698],
10           [-0.1023,  0.6973, -0.6429,  0.8561],
11           [-0.3660,  0.1269,  0.2488,  0.0576],
12           [ 0.0859,  0.1622, -0.0725, -0.0237]]]])
13 
14 # 池化主要需要两个参数, 第一个参数代表池化区域大小, 第二个参数表示步长
15 out_max = max_pooling(input)
16 print(out_max)
17 >> tensor([[[[1.2237, 0.8561],
18           [0.1622, 0.2488]]]])
19           
20 # 调用最大值池化与平均值池化, 可以看到size从[1, 1, 4, 4]变为了[1, 1, 2, 2]
21 out_aver = aver_pooling(input)
22 print(out_aver)
23 >> tensor([[[[0.2503, 0.0309],
24           [0.0023, 0.0525]]]])
View Code

相关文章:

  • 2021-10-14
  • 2021-12-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-31
  • 2021-05-22
  • 2021-08-25
猜你喜欢
  • 2021-06-26
  • 2021-11-25
  • 2021-11-06
  • 2021-05-07
  • 2021-12-24
  • 2021-10-16
相关资源
相似解决方案