池化
可以运行的代码
"""
author :24nemo
date :2021年07月07日
"""
from torch import nn
from torch.nn.modules.pooling import MaxPool2d
'''
通过官方文档介绍参数,一般只需要设置 kernel size
其中,ceil_mode是一个重要参数,当kernel滑动,省下的位置,不够kernel的大小,那这组数据还要不要,就是通过ceil_mode来选择的
stride滑动的默认值,是kernel的大小,跟conv不一样,注意
'''
import torch
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)
input = torch.reshape(input, (-1, 1, 5, 5))
print("input.shape:", input.shape)
class Tudui(nn.Module):
def __init__(self):
super(Tudui, self).__init__()
self.maxpool1 = MaxPool2d(kernel_size=3, ceil_mode=True)
def forward(self, input):
output = self.maxpool1(input)
return output
tudui = Tudui()
output = tudui(input)
print("output:", output)
'''
这里输出的是:
torch.Size([1, 1, 5, 5])
tensor([[[[2., 3.],
[5., 1.]]]])
当 ceil_mode = False 时,输出就只有:
torch.Size([1, 1, 5, 5])
tensor([[[[2.]]]])
'''
'''
最大池化的作用:
保留特征的同时,还能减小数据尺寸,加快训练
往往 卷积之后,加一层池化,再归一化(归一化要在非线性激活也就是激活函数之前),后面再非线性激活,也就是:conv ——> pooling ——> batch normalization ——> relu
'''
'''
还有其他的内容,见上面代码,比如tensorboard显示处理结果
'''
|