有人做网站花了10几万,网站集约化建设题目,网站建设合作,母婴微网站设计规划一、Pooling layers
Pooling layers官网文档 MaxPool最大池化层下采样 MaxUnpool最大池化层上采样 AvgPool最大池化层平均采样
例如#xff1a;池化核为(3,3)#xff0c;输入图像为(5,5)#xff0c;步长为1#xff0c;不加边 最大池化就是选出在池化核为单位图像中的最大…一、Pooling layers
Pooling layers官网文档 MaxPool最大池化层下采样 MaxUnpool最大池化层上采样 AvgPool最大池化层平均采样
例如池化核为(3,3)输入图像为(5,5)步长为1不加边 最大池化就是选出在池化核为单位图像中的最大的值
二、MaxPool2d
torch.nn.MaxPool2d官网API torch.nn.MaxPool2d(kernel_size, strideNone, padding0, dilation1, return_indicesFalse, ceil_modeFalse)
参数解释kernel_size池化核的大小stride池化核移动时的步长默认值为kernel_sizepadding是否对原图像进行加边操作dilation池化核映射到图像上每个池化核单元是否有距离又称空洞池化或空洞卷积return_indicesceil_modeTrue时使用ceil模式(2.31取2向下取整舍去小数保留边缘剩余数据)False时使用floor模式默认为False (2.31取3向上取整整数加一舍去边缘剩余数据)
三、代码实操
对一个(5,5)的数据进行(kernel_size3)池化核为(3,3)步长(stride)没传 默认为池化核大小(kernel_size3)为3padding也没传参默认为0表示不加边ceil_modeTrue保留边缘剩余数据 MaxPool2d(kernel_size3,ceil_modeTrue) 通过池化层处理之后输出一个结果为二维tensor[[5,5],[5,5,]]
import torch
from torch import nn
from torch.nn import MaxPool2dinput torch.tensor([[1,2,3,4,5],[5,4,3,2,1],[1,2,3,4,5],[5,4,3,2,1],[1,2,3,4,5]],dtypetorch.float32)
#RuntimeError: max_pool2d not implemented for Long 需要将数据进行转换dtypetorch.float32input torch.reshape(input,(-1,1,5,5))print(input.shape)#torch.Size([1, 1, 5, 5])class Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.maxpool_1 MaxPool2d(kernel_size3,ceil_modeTrue)def forward(self,input):output self.maxpool_1(input)return outputbeyond Beyond()
output beyond(input)
print(output)tensor([[[[5., 5.],[5., 5.]]]])四、池化层意义
保留输入图像的特征同时把数据量给减小 (5,5)的图像经过池化层就会变成(3,3)甚至(1,1) 数据量的减小对于神经网络而言参数少了训练的速度会更快
五、通过池化层处理CIFAR-10数据集
对CIFAR10的1w张测试集数据进行(kernel_size3)池化核为(3,3)步长(stride)没传 默认为池化核大小(kernel_size3)为3padding也没传参默认为0表示不加边ceil_modeTrue保留边缘剩余数据 MaxPool2d(kernel_size3,ceil_modeTrue)
import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset_test torchvision.datasets.CIFAR10(CIFAR_10,trainFalse,transformtorchvision.transforms.ToTensor(),downloadTrue)dataloader DataLoader(datasetdataset_test,batch_size64)#64张为一组class Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.maxpool_1 MaxPool2d(kernel_size3,ceil_modeTrue)def forward(self,input):output self.maxpool_1(input)return outputbeyond Beyond()
writer SummaryWriter(y_log)i0
for data in dataloader:imgs,targets datawriter.add_images(input_maxpool,imgs,i)output beyond(imgs)writer.add_images(output_maxpool,output,i)i i 1writer.close()在Terminal下运行tensorboard --logdiry_log --port7870logdir为打开事件文件的路径port为指定端口打开 通过指定端口7870进行打开tensorboard若不设置port参数默认通过6006端口进行打开。 点击该链接或者复制链接到浏览器打开即可