池化、线性、激活函数
池化层 Pooling Layer
池化运算:对信号进行“收集”并“总结”,类似水池收集水资源,因而得名池化层
“收集”:多变少
“总结”:选取最大值或平均值
nn.MaxPool2d
功能 对二维信号(图像)进行最大值池化
主要参数
kernel_size 池化核尺寸
stride 步长
padding 填充个数
dilation 池化核间隔大小
ceil_mode 尺寸向上取整
return_indices 记录池化像素索引 最大值像素所在位置
线性层 Linear Layer
激活函数层 Activation Layer
nn.AvgPool2d
对二维信号(图像)进行平均值池化
主要参数
kernel_size 池化核尺寸
stride 步长
padding 填充个数
dilation 池化核间隔大小
ceil_mode 尺寸向上取整
count_include_pad 填充值用于计算
divisor_override 除法因子
nn.MaxUnpool2d
功能 对二维信号(图像)进行最大值池化上采样
kernel_size 池化核尺寸
stride 步长
padding 填充个数
# -*- coding: utf-8 -*-
import os
import torch
import torch.nn as nn
from PIL import Image
from torchvision import transforms
from matplotlib import pyplot as plt
from tools.common_tools import transform_invert, set_seed
set_seed(3) # 设置随机种子
# ================================= load img ==================================
path_img = os.path.join(os.path.dirname(os.path.abspath(__file__)), "lena.png")
img = Image.open(path_img).convert('RGB') # 0~255
# convert to tensor
img_transform = transforms.Compose([transforms.ToTensor()])
img_tensor = img_transform(img)
img_tensor.unsqueeze_(dim=0) # C*H*W to B*C*H*W
# ================================= create convolution layer ====================