动手学深度学习10:汇聚层(pooling)
动手学深度学习10:汇聚层(pooling)
通常当我们处理图像时,我们希望逐渐降低隐藏表示的空间分辨率、聚集信息,这样随着我们在神经网络中层叠的上升,每个神经元对其敏感的感受野(输入)就越大。
而我们的机器学习任务通常会跟全局图像的问题有关(例如,“图像是否包含一只猫呢?”),所以我们最后一层的神经元应该对整个输入的全局敏感。通过逐渐聚合信息,生成越来越粗糙的映射,最终实现学习全局表示的目标,同时将卷积图层的所有优势保留在中间层。
除此之外,汇聚层海可以降低卷积层对位置的敏感性,使得模型具有更好的鲁棒性。
最大汇聚层和平均汇聚层
汇聚窗口形状为p×qp \times qp×q的汇聚层称为p×qp \times qp×q汇聚层,汇聚操作称为p×qp \times qp×q汇聚。
import torch
from torch import nn
from d2l import torch as d2ldef pool2d(X, pool_size, mode='max'):p_h, p_w = pool_sizeY = torch.zeros((X.shape[0] - p_h + 1, X.shape[1] - p_w + 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):if mode == 'max':Y[i, j] = X[i: i + p_h, j: j + p_w].max()elif mode == 'avg':Y[i, j] = X[i: i + p_h, j: j + p_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'))
与卷积层一样,汇聚层也可以改变输出形状。
默认情况下,(深度学习框架中的步幅与汇聚窗口的大小相同)。
因此,如果我们使用形状为(3, 3)
的汇聚窗口,那么默认情况下,我们得到的步幅形状为(3, 3)
。
X = torch.arange(16, dtype=torch.float32).reshape((1, 1, 4, 4))
# tensor([[[[ 0., 1., 2., 3.],
# [ 4., 5., 6., 7.],
# [ 8., 9., 10., 11.],
# [12., 13., 14., 15.]]]])
pool2d = nn.MaxPool2d(3, padding=1, stride=2)
pool2d(X)
# tensor([[[[ 5., 7.],
# [13., 15.]]]])
在处理多通道输入数据时,[汇聚层在每个输入通道上单独运算],而不是像卷积层一样在通道上对输入进行汇总。
这意味着汇聚层的输出通道数与输入通道数相同。
小结
- 对于给定输入元素,最大汇聚层会输出该窗口内的最大值,平均汇聚层会输出该窗口内的平均值。
- 汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。
- 我们可以指定汇聚层的填充和步幅。
- 使用最大汇聚层以及大于1的步幅,可减少空间维度(如高度和宽度)。
- 汇聚层的输出通道数与输入通道数相同。
动手学深度学习10:汇聚层(pooling)相关推荐
- 动手深度学习v2 汇聚层pooling 课后习题
文章目录 1.你能将平均汇聚层作为卷积层的特殊情况实现吗? 2.你能将最大汇聚层作为卷积层的特殊情况实现吗? 3.假设汇聚层的输入大小为 c×h×w ,则汇聚窗口的形状为 ph×pw ,填充为 (ph ...
- 送10本今年最火的《动手学深度学习》
点击我爱计算机视觉标星,更快获取CVML新技术 52CV曾经多次介绍FlyAI机器学习竞赛平台,不少粉丝也曾在FlyAI拿到现金奖励. 本次52CV & FlyAI联合送书,CV君查找了两天, ...
- 【动手学深度学习PyTorch版】12 卷积层
上一篇移步[动手学深度学习PyTorch版]11 使用GPU_水w的博客-CSDN博客 目录 一.卷积层 1.1从全连接到卷积 ◼ 回顾单隐藏层MLP ◼ Waldo在哪里? ◼ 原则1-平移不变性 ...
- 【动手学深度学习PyTorch版】15 池化层
上一篇请移步[动手学深度学习PyTorch版]14 卷积层里的多输入多输出通道_水w的博客-CSDN博客 目录 一.池化层 1.1 池化层 ◼池化层原因 ◼ 二维最大池化 1.2 填充.步幅与多个通道 ...
- 【动手学深度学习PyTorch版】13 卷积层的填充和步幅
上一篇移步[动手学深度学习PyTorch版]12 卷积层_水w的博客-CSDN博客 目录 一.卷积层的填充和步幅 1.1 填充 1.2 步幅 1.3 总结 二.代码实现填充和步幅(使用框架) 一.卷积 ...
- 【动手学深度学习】(task123)注意力机制剖析
note 将注意力汇聚的输出计算可以作为值的加权平均,选择不同的注意力评分函数会带来不同的注意力汇聚操作. 当查询和键是不同长度的矢量时,可以使用可加性注意力评分函数.当它们的长度相同时,使用缩放的& ...
- 【动手学深度学习PyTorch版】19 网络中的网络 NiN
上一篇请移步[动手学深度学习PyTorch版]18 使用块的网络 VGG_水w的博客-CSDN博客 目录 一.网络中的网络 NiN 1.1 NiN ◼ 全连接层的问题 ◼ 大量的参数会带来很多问题 ◼ ...
- 李沐动手学深度学习V2-全卷积网络FCN和代码实现
一.全卷积网络FCN 1. 介绍 语义分割是对图像中的每个像素分类,全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换 ,与前 ...
- 资源 | 李沐等人开源中文书《动手学深度学习》预览版上线
来源:机器之心 本文约2000字,建议阅读10分钟. 本文为大家介绍了一本交互式深度学习书籍. 近日,由 Aston Zhang.李沐等人所著图书<动手学深度学习>放出了在线预览版,以供读 ...
最新文章
- jmx使用应该注意的基本规范
- 张岩 重庆大学 计算机学院,扬帆起,乘东风,气芳华——记重庆大学计算机学院新老生交流会...
- JAVA--虚函数,抽象函数,抽象类,接口
- 福利好礼现金大奖等你来→首届 .NET Conf China Hackathon 火热报名中!
- python创建tcp socket_Python Socket如何建立TCP连接
- 每日一题(22)——malloc与free(三)
- 数据可视化揭晓NBA球星顶薪背后的真相
- DIGITS使用步骤
- logistic回归详解
- redis 默认过期策略_redis过期策略
- 《Python渗透测试编程技术:方法与实践》:信息的利用(进阶)
- Boost库系列:asio总结
- iphone8引发的AR大事件
- 关于dd命令的使用以及详解
- 【集大成篇】数据类型( C、C++、Java )对比
- 程序员版「成语新解」,万万没想到你们竟是这样的……
- 2022央企施工企业加速推进数字化转型赋能高质量发展
- jQuery Steps插入或移除步骤
- WPF 项目开发入门(一) 安装运行
- C语言编写冰雹猜想(角谷猜想)