torch实现图像的Maxpool

torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, 
                    dilation=1, return_indices=False, ceil_mode=False)

参数kernel_size,stride, padding,dilation数据类型: 可以是一个int类型的数据,此时卷积height和width值相同; 也可以是一个tuple数组(包含来两个int类型的数据),第一个int数据表示height的数值,tuple的第二个int类型的数据表示width的数值

参数:

(1)kernel_size(int or tuple)              - max pooling的窗口大小
(2)stride(int or tuple, optional)         - max pooling的窗口移动的步长。默认值是kernel_size
(3)padding(int or tuple, optional)     - 输入的每一条边补充0的层数
(4)dilation(int or tuple, optional)      - 一个控制窗口中元素步幅的参数
(5)return_indices - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助
(6)ceil_mode - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作
 

import os
import torch.nn as nn
import torch
from PIL import Image
import numpy as np
from torchvision import transforms
import torchvision
import torch.nn.functional as F


class Maxpool(nn.Module):
    def __init__(self):    # 传入需要初始化的参数,此例中无
        super(Maxpool, self).__init__()
        self.maxpool = nn.MaxPool2d(kernel_size=2, stride=2)

    def forward(self, x):
        x = self.maxpool(x)          
        return x


img_dir = './output10000/'
img_names = [i for i in os.listdir(img_dir)]     # 获取图像名称到img_names列表中
img_path = [img_dir + i for i in img_names]      # 获取图像路径到img_path列表中
# print(img_names[1])
# print(img_path[1])

img = Image.open(img_path[2]).convert('RGB')
# PIL.Image 或者 numpy.ndarray 为(H,W,C) range[0, 255] 
# print(img_tensor.size())
# print(type(img))

transf = transforms.ToTensor()
img_tensor = transf(img)
# torch.FloatTensor() 为 (C,H,W) range[0.0, 1.0]
# print(img_tensor.size())
# print(type(img))

# 实例化模型
model = Maxpool()
print(model)

# 传入图片 tensor类型
output = model(img_tensor)
# print(output)

# torch的tensor类型,保存图片并输出
output_path = r'./outputmaxpool/'
if not os.path.exists(output_path):
    os.mkdir(output_path)
torchvision.utils.save_image(output, output_path + img_names[2])
# torchvision.utils.save_image(output, './outputcnnpool/result44.png')

网络模型:

 

 

输入与输出图像尺寸:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值