神经网络组件详解-池化层

一维池化

一维池化常用于NLP任务,二维池化主要用于任务。

一维平均池化

在这里插入图片描述

对应的pytorch代码实现:

from torch import nn
import torch

#随机的3维张量 batch_size * sentence_length * dim_size,取值区间为1-4的整数 
x = torch.randint(1, 4, size=(3,4,5))
print('变换前x的形状:')
print(x)

# pytorch默认在最后一维的方向上做池化,所以需要变形以获得希望的池化方式
x = x.transpose(1,2)
#print('\n变换后x的形状:')
#print(x)


#入参4,代表每4组池化一次
avg_pool = nn.AvgPool1d(4)

x_float = x.float()
y = avg_pool(x_float)
#print('\n池化后的形状:')
#print(y)

print('\n池化后变性为最终形状:')
y = y.transpose(1,2)
print(y)
#print(y.squeeze())
'''
变换前x的形状:
tensor([[[2, 1, 1, 1, 1],
         [2, 3, 2, 2, 3],
         [2, 1, 2, 3, 3],
         [2, 3, 1, 2, 3]],

        [[1, 3, 2, 2, 2],
         [2, 3, 3, 1, 2],
         [2, 1, 1, 1, 2],
         [1, 1, 1, 2, 3]],

        [[3, 2, 3, 3, 2],
         [3, 3, 1, 2, 2],
         [3, 3, 1, 2, 2],
         [3, 3, 3, 1, 3]]])

池化后变性为最终形状:
tensor([[[2.0000, 2.0000, 1.5000, 2.0000, 2.5000]],

        [[1.5000, 2.0000, 1.7500, 1.5000, 2.2500]],

        [[3.0000, 2.7500, 2.0000, 2.0000, 2.2500]]])
'''

二维池化

二维max 池化

在这里插入图片描述
对应的pytorch代码实现:

from torch import nn
import torch

#随机的3维张量 batch_size * sentence_length * dim_size,取值区间为1-4的整数 
x = torch.randint(1, 9, size=(3,4,6))
print('变换前x的形状:')
print(x)

# max_pool = nn.MaxPool2d(kernel_size=池化窗口, stride=你的步长)
max_pool = nn.MaxPool2d((2, 3),(2,3))

x_float = x.float()
y = max_pool(x_float)
print('\n池化后的形状:')
print(y)

'''
变换前x的形状:
tensor([[[5, 4, 3, 8, 2, 7],
         [1, 5, 2, 1, 6, 6],
         [2, 2, 3, 8, 8, 4],
         [3, 6, 3, 8, 1, 8]],

        [[1, 4, 7, 5, 4, 4],
         [4, 6, 7, 2, 1, 5],
         [8, 3, 3, 8, 5, 8],
         [6, 5, 1, 7, 2, 3]],

        [[4, 6, 3, 7, 6, 5],
         [1, 8, 3, 1, 7, 5],
         [8, 1, 6, 8, 7, 4],
         [3, 8, 4, 2, 2, 2]]])

池化后的形状:
tensor([[[5., 8.],
         [6., 8.]],

        [[7., 5.],
         [8., 8.]],

        [[8., 7.],
         [8., 8.]]])
'''
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值