前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch定义Pooling Layer以及ReLU Layer

Pytorch定义Pooling Layer以及ReLU Layer

作者头像
mathor
发布2020-01-15 10:34:20
1.1K0
发布2020-01-15 10:34:20
举报
文章被收录于专栏:mathor

Pooling

Pooling的讲解可以看我的这篇文章CS231n 笔记:通俗理解 CNN

这里主要讲解一下如何用 pytorch定义Pooling层,有两种方式,具体看下面代码

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

x = torch.rand(1, 16, 14, 14)

# 第一种方式
layer = nn.MaxPool2d(2, stride=2)
#  第一个参数是:窗口的大小 2*2
out = layer(x)
print(out.shape)

# 第二种方式
out = F.avg_pool2d(x, 2, stride=2)

除了下采样,Pytorch还可以实现上采样

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

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

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

上采样不改变channel,而会把原来的大小放大指定的倍数

ReLU

最后再简单介绍一下ReLU的效果

ch
ch

之前有介绍过ReLU函数时将低于某个阈值的输出全部归为0,高于阈值的线性输出。上图就是使用ReLU之后的效果,黑色区域全部被消除了

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

x = torch.rand(1, 16, 7, 7)
# 第一种方式
layer = nn.ReLU(inplace=True)
# inpalce设为True会同时改变输入的参数x,若设为false则不会
out = layer(x)
print(out.shape) # torch.Size([1, 16, 7, 7])

# 第二种方式
out = F.relu(x)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pooling
  • ReLU
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档