1.pooling layer
Applies a 1D max pooling over an input signal composed of several input planes. | |
Applies a 2D max pooling over an input signal composed of several input planes. 二维最大池化 下采样 | |
Applies a 3D max pooling over an input signal composed of several input planes. | |
Computes a partial inverse of | |
Computes a partial inverse of 上采样 |
(1)nn.MaxPool2d
作用:本质是基于滑动窗口的思想,可以去除特征图中的冗余信息,降低特征图的维度。
torch.nn.
MaxPool2d
(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
kernel_size :池化核
stride:步长 默认值 是池化核大小
dilation:空洞池化,原来正常的是紧挨在一起的,现在不是,如下图:
ceil_mode:设置为true时,用cell模式,false时用floor模式,floor舍,ceil入
例:步长是池化核的大小,cell_mode举例
(2) 代码演示
import tensorboard
import torch
import torchvision.datasets
from torch import nn
from torch.nn import MaxPool2d
#下载数据集
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
dataset=torchvision.datasets.CIFAR10("dataset",train=False,download=True,transform=torchvision.transforms.ToTensor())
dataloader=DataLoader(dataset,batch_size=64)
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)#dtype 将数据转为浮点数
input=torch.reshape(input,(-1,1,5,5))#参数,batch_size=-1,channel=1,大小是5*5
print(input.shape)
class Tudui(nn.Module):
def __init__(self) -> None:
super().__init__()
self.maxpool1=MaxPool2d(kernel_size=3,stride=3,ceil_mode=False)
def forward(self,input):
output=self.maxpool1(input)
return output
tudui=Tudui()
output=tudui(input)
print(output)
tu=Tudui()
writer=SummaryWriter("logs_maxpool")
step=0
for data in dataloader:
imgs,targets=data
writer.add_images("input",imgs,step)
output=tu(imgs)
writer.add_images("output",output,step)
step=step+1
writer.close()