前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch基础知识-pooling(池化)层

pytorch基础知识-pooling(池化)层

作者头像
用户6719124
发布2019-11-21 20:54:35
9.6K0
发布2019-11-21 20:54:35
举报

本节介绍与神经层配套使用的pooling(池化)层的定义和使用。

pooling(池化)层原则上为采样操作,与upsample(上采样)不同的是,pooling为下采样操作,即将feature map变小的操作。

那么下采样和上采样是什么含义呢?

首先介绍下采样

如图所示,将图片上的矩阵由右变向左的操作即为下采样。上图可见是每隔1个元素取一个样,向右方向取了A和B、向下方向取了A和C。这样完成了4*4矩阵向2*2矩阵的转化。

而在卷积神经网络中,以max pooling操作为例

过程如下

Kernel size为2*2的小窗口,在第一个框内取了最大值6后,向右方向进行了步长为2的移动,在2、4、7、8四个值中取了最大值8。同理再进行向下移动。

与max pooling对应的还有Avg pooling,即取平均数。

比较简单,这里不再赘述。

那么在pytorch中如何完成pooling操作

代码语言:javascript
复制
import torch
import torch.nn as nn
import torch.nn.functional as F

x = torch.rand(1, 16, 28, 28)
# 先定义x
layer = nn.MaxPool2d(2, stride=2)
# 括号内第一个参数是:窗口的大小,第二个是移动的步长距离
out1 = layer(x)
print(out1.size())

输出为

代码语言:javascript
复制
torch.Size([1, 16, 14, 14])

另外

代码语言:javascript
复制
x = torch.rand(1, 16, 28, 28)
# 先定义x
layer = nn.AvgPool2d(2, stride=2)
# 括号内第一个参数是:窗口的大小,第二个是移动的步长距离
# 进行Avg pooling的计算
out2 = layer(x)
print(out2.size())

输出为

代码语言:javascript
复制
torch.Size([1, 16, 14, 14])

同样向上采样的过程为

如上图从左至右的过程为上采样过程。上图将原数据进行复制即得到新的数据。

在pytorch中,代码为

代码语言:javascript
复制
import torch
import torch.nn as nn
import torch.nn.functional as F

x = torch.rand(1, 16, 28, 28)
# 先定义x
out = F.interpolate(x, scale_factor=2, mode='nearest')
# 上采样的API为:.interpolate
# 括号内参数为输入的tensor、放大的倍率、模式为紧邻差值法

print(out.size())

输出为

代码语言:javascript
复制
torch.Size([1, 16, 56, 56])

Bias和input channel不发生改变,原来的28*28放大两倍至56*56

下面再简单扼要的介绍ReLU的效果

之前有介绍过ReLU函数时将低于某个阈值的输出全部归为0,高于阈值的线性输出。

上图是使用效果图。将黑色区块全部取消。

代码语言:javascript
复制
import torch
import torch.nn as nn
import torch.nn.functional as F

x = torch.rand(1, 16, 28, 28)
layer = nn.ReLU(inplace=True)
out = layer(x)
print(out.size())

输出为

代码语言:javascript
复制
torch.Size([1, 16, 28, 28])

在进行ReLU操作,进行inplace操作后,较小值会变为零,但数据的size不会发生改变。通过这种数据会节省一部分的数据存储量。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先介绍下采样
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档