惠州网站建设科技有限公司,建站宝盒手机版下载,网站开发要注意安全性,wordpress大学 主题是什么#xff1a;池化层跟卷积层类似有个滑动窗口#xff0c;用来取一个区域内的最大值或者平均值。
作用#xff1a;卷积神经网络的最后的部分应该要看到整个图像的全局#xff0c;通过池化(汇聚)操作#xff0c;逐渐汇聚要取的像素#xff0c;最终实现学习全局表示的…是什么池化层跟卷积层类似有个滑动窗口用来取一个区域内的最大值或者平均值。
作用卷积神经网络的最后的部分应该要看到整个图像的全局通过池化(汇聚)操作逐渐汇聚要取的像素最终实现学习全局表示的目标。同时卷积层的所有优势也被保留在了中间层。
特点 1.降低卷积层读对位置的敏感性。(优点) 2.降低对空间降采样表示的敏感性。(优点) 3.池化层的输入通道和输出通道相同如X的形状为[1,2,4,4]1代表样本数第二个值2代表通道为2所以输出的结果通道仍然为2输出结果应该为[1,2,计算后的w,计算后的H] 4.使用最大汇聚层以及大于1的步幅可以减少输出结果的空间维度(如高度和宽度)。
解释因为池化是选出一个区域的作最大值或平均值所以取池化区域内的像素时不依赖像素的位置。因为池化层往往在卷积层的后面所以池化层可以降低卷积层对位置的敏感性。同样也可以降低空间降采样的敏感性。
池化后的输出形状
W (行数 - 池化行数 池化行方向步长) / 池化行方向步长 1 H (列数 - 池化列数 池化列方向步长) / 池化列方向步长 1
一.单通道池化
import torch
from torch import nn
from d2l import torch as d2l池化层的前向传播函数
def pool2d(X,pool_size,modemax):p_h,p_w pool_size# 池化层与卷积层类似池化后的输出形状计算方法根卷积一样Y torch.zeros((X.shape[0] - p_h 1,X.shape[1]-p_w1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):if modemax:Y[i,j] X[i:ip_h,j:jp_w].max()elif modeavg:Y[i,j] X[i:ip_h,j:jp_w].mean()return YX torch.tensor([[0.0, 1.0, 2.0],[3.0, 4.0, 5.0],[6.0, 7.0, 8.0]])
print(pool2d(X, (2, 2)))
print(pool2d(X, (2, 2),avg))tensor([[4., 5.],[7., 8.]])
tensor([[2., 3.],[5., 6.]])池化层的填充和步幅
X torch.arange(16,dtypetorch.float32)
print(X)tensor([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,14., 15.])#(样本数通道数行数列数)
X X.reshape((1,1,4,4))
print(X)tensor([[[[ 0., 1., 2., 3.],[ 4., 5., 6., 7.],[ 8., 9., 10., 11.],[12., 13., 14., 15.]]]])默认步幅与池化窗口相同当使用3x3的池化窗口步幅也是3x3
pool2d nn.MaxPool2d(3)
pool2d(X)tensor([[[[10.]]]])手动设置池化尺寸
pool2d nn.MaxPool2d((2,3),stride(2,3),padding(0,1))
pool2d(X)tensor([[[[ 5., 7.],[13., 15.]]]])二.多通道池化
手动设置池化尺寸
pool2d nn.MaxPool2d((2,3),stride(2,3),padding(0,1))
pool2d(X)输出
tensor([[[[ 5., 7.],[13., 15.]]]])多通道池化,X的原shape (1,1,4,4)下句是在第二个维度上增加一个4x4的矩阵 形状变成 (1,2,4,4)
X torch.cat((X,X1),1)
print(X)
print(X.shape)tensor([[[[ 0., 1., 2., 3.],[ 4., 5., 6., 7.],[ 8., 9., 10., 11.],[12., 13., 14., 15.]],[[ 1., 2., 3., 4.],[ 5., 6., 7., 8.],[ 9., 10., 11., 12.],[13., 14., 15., 16.]]]])
torch.Size([1, 2, 4, 4])pool2d nn.MaxPool2d(3,padding1,stride2)
X pool2d(X)
print(X)
print(X.shape) # 池化不像卷积那样每个通道的结果要合在一起所以池化层的输入通道和输出通道相同tensor([[[[ 5., 7.],[13., 15.]],[[ 6., 8.],[14., 16.]]]])
# 池化层的输入通道和输出通道相同X的通道为2所以输出的结果通道仍然为2下面第一个1是样本数第二个值是通道数
torch.Size([1, 2, 2, 2])