前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >池化层.最大池化

池化层.最大池化

作者头像
月梦@剑心
发布2022-09-14 14:03:55
4860
发布2022-09-14 14:03:55
举报
文章被收录于专栏:月梦·剑心的技术专栏

池化层,有池化核类似于卷积核。最常使用的池化操作时最大池化,最大池化操作是选择池化核所覆盖的网格中最大的数作为输出。

池化层的作用是保留输入特征同时把数据量减小

写一个仅有池化层的神经网络作为测试,体验池化层的作用

代码语言:javascript
复制
import torch
from torch import nn
#设置输入数据,5*5矩阵
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)
#变换输入数据使得输入符合池化层要求的格式
#-1batch_size自己算,1代表一维,5*5的矩阵
input=torch.reshape(input,(-1,1,5,5))
#定义神经网络类
class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        #构建池化层
        self.pooling=torch.nn.MaxPool2d(3,ceil_mode=True)
    #前向传播函数
    def forward(self,input):
        return self.pooling(input)
#实例化神经网络对象
model=MyModel()
#将数据喂入神经网络处理
output=model(input)
print(output)

池化层MaxPool2d的参数ceil_mode若设置为True,则当池化核未完全覆盖网格时,仍然取最大的数字输出,若设置为False,则直接舍弃并且不输出;stride参数默认值为池化核的大小。

通过程序可以看到,输入为5*5的矩阵,输出仅为2*2,减小了数据量同时保留了输入特征。

代码语言:javascript
复制
C:\ProgramData\Anaconda3\envs\AI\python.exe C:/Users/且看风去风留/PycharmProjects/pytorch/pooling_layer.py
tensor([[[[2., 3.],
          [5., 1.]]]])
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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