神经网络——最大池化
最大池化的目的在于保留原特征的同时减少神经网络训练的参数,使得训练时间减少。相当于1080p的视频变为了720p
最大池化介绍
池化层最常用的是下采样,其中参数:
kernel_size:设置取最大值的窗口,类似于卷积层的卷积核,如果传入参数是一个int型,则生成一个正方形,边长与参数相同;若是两个int型的元组,则生成长方形。
stride:步径,与卷积层不同,默认值是kernel_size的大小。
padding:和卷积层一样,用法类似于kernel_size。
dilation:控制窗口中元素步幅的参数,就是两两元素之间有间隔:
ceil_mode:设置ceil模式和floor模式。比如有一个数据:
kernel_size为3:
第一次匹配:
挑选出9个数中最大的值:2,然后先向右移动 kernel_size大小的距离:
此时因为数据没有凑足kernel_size的大小,便涉及取舍问题,ceil_mode为True,则保留,结果为3,若为False,则不保留。得到两种情况的最大池化结果:
ceil_mode = True:
ceil_mode = False:
图像相关尺寸公式:
代码实现
上述验证
先用上面的例子进行验证。首先,初始化输入:
input = torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]])
可知,input需要有四个参数,batch_size、channel、输入的高、输入的宽,则设置:
input = torch.reshape(input, [-1, 1, 5, 5])
创建一个神经网络:
class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.maxpool1 = nn.MaxPool2d(kernel_size=3, ceil_mode=True)def forward(self, input):return self.maxpool1(input)
如果我们将数据放到神经网络训练,会报错,因为不支持输入"Long"型数据,则略修改:
input = torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]], dtype=torch.float32)model = Model()
print(model(input))
输出结果:
tensor([[[[2., 3.],
[5., 1.]]]])
与之前的值一致。
可视化表示
和卷积不同,池化输入为三维,输出仍然为三维,最后图片显示不用reshape。
采用CIFAR10数据集的照片:
#设置dataloader
dataset = torchvision.datasets.CIFAR10("./dataset", False, torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset, 64)
使用Tensorboard:
import torchvision
from torch import nn
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWritermodel = Model()
writer = SummaryWriter("logs")step = 0
for data in dataloader:imgs,targets = datawriter.add_images("inputs", imgs, step)outputs = model(imgs)writer.add_images("outpuxts", outputs, step)step = step+1writer.close()
观察图片:
图片变模糊,保留原图片的特征,让训练参数减少。
神经网络——最大池化相关推荐
- 【卷积神经网络--卷积/池化后特征图大小计算公式】
[卷积神经网络–卷积/池化后特征图大小计算公式] 参考链接: 卷积神经网络系列之卷积/池化后特征图大小怎么计算?? torch中的Conv2d卷积的输入的Tensor张量是:[batch, chann ...
- 【Pytorch神经网络理论篇】 13 深层卷积神经网络介绍+池化操作+深层卷积神经网络实战
1 深层卷积神经网络概述 1.1 深层卷积神经网络模型结构图 1.1.1 深层卷积神经网络的正向结构构成剖析 输入层,将每个像素作为一个特征节点输入网络. 卷积层:由多个滤波器组合而成. 池化层:将卷 ...
- 图神经网络的池化操作
图神经网络有两个层面的任务:一个是图层面(graph-level),一个是节点(node-level)层面,图层面任务就是对整个图进行分类或者回归(比如分子分类),节点层面就是对图中的节点进行分类回归 ...
- 卷积神经网络卷积,池化,全连接--笔记01
1.图像是由像素构成的,每个像素又是由颜色构成的 假如我们处理一张 1000×1000 像素的图片,我们就需要处理3百万个参数! 1000×1000×3=3,000,000 卷积神经网络 - CNN ...
- 卷积神经网络 卷积 池化 上下采样
(参考链接https://www.zhihu.com/question/39022858) 如何理解卷积神经网络(CNN)中的卷积和池化?(参考链接https://www.zhihu.com/ques ...
- 深度学习与神经网络(七)——卷积神经网络之池化pooling 上采样upsample与降采样downsample(下采样)(subsample)(nn.MaxPool2d)
池化层pooling与采样 upsample与downsample upsample(interpolating)是上采样,是图片的放大 unpool是上采样的一种 downsample(subsam ...
- python实现卷积_【python实现卷积神经网络】池化层实现
激活函数的实现(sigmoid.softmax.tanh.relu.leakyrelu.elu.selu.softplus):https://www.cnblogs.com/xiximayou/p/1 ...
- 【FPGA教程案例56】深度学习案例3——基于FPGA的CNN卷积神经网络之池化层verilog实现
FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...
- 【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )
文章目录 I . 池化 II . 丢弃操作 III . 批量规范化 IV . 卷积神经网络 完整流程示例 ( 1 ) : 原始输入图 V . 卷积神经网络 完整流程示例 ( 2 ) : 卷积层 C1C ...
最新文章
- mysql约束日期_MySQL的约束、事务、字符串、日期、数学相关及其他补充
- 解决TextView排版混乱或者自动换行的问题
- 递归神经网络不可思议的有效性
- 老大难的 Java ClassLoader,到了该彻底理解它的时候了
- 面向对象编程 - 练习题
- 华为笔记本matebook13_华为MateBook 13_HUAWEI MateBook 13(i5 8265U/8GB/256GB/独显)_笔记本导购-中关村在线...
- 前端学习(1667):前端系列实战课程之拖拽
- Retrofit网络请求框架使用简析——Android网络请求框架(四)
- 第二阶段冲刺 每日站立会议 1/4
- .anonymous springsecurity需要登陆嘛_springSecurity之java配置篇
- AcWing 99. 激光炸弹 (二维前缀和)
- 计算机毕业设计最新选题汇总(持续更新)
- 2019-05-22 SperScan扫描器;SperScan附属工具
- 转载——巨详细的MD5加盐,大佬详解
- 【上汽零束SOA】云管端一体化SOA软件平台系列介绍之四:车云一体架构篇
- PDF删除页面免费的方法有什么?PDF怎么删除页面的技巧你不能错过
- 利用EXCEL进行数据爬虫
- Redis - NX与XX
- 计算机抖音链接,抖音怎么开始电脑直播
- android点歌系统代码