一、 最大池化的使用

  1. 导包

    1. import torch
    2. import torchvision
    3. from torch import nn
    4. from torch.nn import Conv2d,MaxPool2d
    5. from torch.utils.data import DataLoader
    6. from tensorboardX import SummaryWriter
  2. 加载数据

    1. dataset = torchvision.datasets.CIFAR10("./dataset",
    2. train=False,
    3. transform = torchvision.transforms.ToTensor(),
    4. download = False)
    5. dataloader = DataLoader(dataset, batch_size =64)
  3. 定义模型

    1. class Test2(nn.Module):
    2. def __init__(self):
    3. super().__init__()
    4. """
    5. kernel_size (int or tuple) - max pooling核的大小。
    6. stride (int or tuple, optional) - max pooling窗口的移动步长。默认值是kernel_size,这样就能够起到成倍数的降采用的目的。
    7. padding(int or tuple, optional) - 输入的每一条边补充0的层数,主要用于边缘处填充。
    8. dilation(int or tuple, optional) – max pool核中元素间的间隔。
    9. return_indices - 如果等于True,会返回输出最大值对应的序号序列。
    10. ceil_mode - 如果等于True,剩余边缘不足的会计算,为False则会舍去
    11. """
    12. self.maxpool1 = MaxPool2d(kernel_size=3, ceil_mode=True)
    13. def forward(self, input):
    14. output = self.maxpool1(input)
    15. return output
  4. 运行

    1. writer = SummaryWriter("logs")
    2. test2 = Test2()
    3. for idx,data in enumerate(dataloader):
    4. imgs, tragets = data
    5. output = test2(imgs)
    6. writer.add_images("maxpool", imgs, idx)
    7. writer.add_images("maxpool_output", output, idx)
    8. writer.close()

    image.pngimage.png