ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PyTorch笔记--池化层

2021-08-21 20:31:32  阅读:244  来源: 互联网

标签:kernel 池化层 nn -- torch stride PyTorch 输入 out


深度学习的运算量与运算过程的张量大小(N, C, H, W)有关。输入的张量太大,不仅不匹配最终的输出结果,还会

使计算量变大。为了能够同时减少计算量,并且得到比较小的输出,神经网络会使用池化层来对中间的特征向量

进行降采样,减小H和W的大小。池化层没有任何参数张量和缓存张量,在深度学习过程中仅仅相当于改变维度

大小的模块。

 

最大池化层:选定某一卷积核的区域,取这个区域中输入张量的最大值。根据输入张量形状的不同,最大池化层分为

一维、二维和三维最大池化。

torch.nn.MaxPool1d

对于输入信号的输入通道,提供1维最大池化(max pooling)操作

class torch.nn.MaxPool1d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

torch.nn.MaxPool2d

对于输入信号的输入通道,提供2维最大池化(max pooling)操作

class torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

torch.nn.MaxPool3d

对于输入信号的输入通道,提供3维最大池化(max pooling)操作

class torch.nn.MaxPool3d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

参数:

  • kernel_size(int or tuple) - max pooling的窗口大小
  • stride(int or tupleoptional) - max pooling的窗口移动的步长。默认值是kernel_size
  • padding(int or tupleoptional) - 输入的每一条边补充0的层数
  • dilation(int or tupleoptional) – 一个控制窗口中元素步幅的参数
  • return_indices - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助
  • ceil_mode - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作

示例:

>>> import torch
>>> import torch.nn as nn
>>> x = torch.randn(4, 3, 20)
>>> layer = nn.MaxPool1d(2, stride=2)
>>> out = layer(x)
>>> out.shape
torch.Size([4, 3, 10])

 

>>> import torch
>>> import torch.nn as nn
>>> x = torch.randn(4, 3, 28, 28)
>>> layer = nn.MaxPool2d(2, stride=2)
>>> out = layer(x)
torch.Size([4, 3, 14, 14])

 

>>> import torch
>>> import torch.nn as nn
>>> x = torch.randn(4, 3, 15, 15, 15)
>>> layer = nn.MaxPool3d(3, stride=2)
>>> out = layer(x)
>>> out.shape
torch.Size([4, 3, 7, 7, 7])

 

平均池化层:选定某一卷积核的区域,取这个区域中输入张量的平均值。同理,也有一维、二维、三维之分。

torch.nn.AvgPool1d

对信号的输入通道,提供1维平均池化(average pooling ) 输入信号的大小(N,C,L),输出大小(N,C,L_out)。

class torch.nn.AvgPool1d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)

torch.nn.AvgPool2d

对信号的输入通道,提供2维的平均池化(average pooling )输入信号的大小(N,C,H,W),输出大小(N,C,H_out,W_out)

class torch.nn.AvgPool2d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)

torch.nn.AvgPool3d

对信号的输入通道,提供3维的平均池化(average pooling) 输入信号的大小(N,C,D,H,W),输出大小(N,C,D_out,H_out,W_out)

class torch.nn.AvgPool3d(kernel_size, stride=None)

参数:

  • kernel_size(int or tuple) - 池化窗口大小
  • stride(int or tupleoptional) - avg pooling的窗口移动的步长。默认值是kernel_size
  • padding(int or tupleoptional) - 输入的每一条边补充0的层数
  • dilation(int or tupleoptional) – 一个控制窗口中元素步幅的参数
  • ceil_mode - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作
  • count_include_pad - 如果等于True,计算平均池化时,将包括padding填充的0

 

标签:kernel,池化层,nn,--,torch,stride,PyTorch,输入,out
来源: https://www.cnblogs.com/xxmrecord/p/15170493.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有