pytorch学习笔记03-nn.Module-卷积-池化-激活函数

Content:

      • 1. 构建模型
      • 2. torch.nn
          • (1) nn.Parameter
          • (2) nn.Module
          • (3) nn.functional
          • (4) nn.init
      • 3. Containers
          • (1) nn.Sequential
          • (2) nn.ModuleList
          • (3) nn.ModuleDict
      • 4. 卷积
      • 5. 转置卷积
      • 6. 池化
      • 7.线性层
      • 8.激活函数

1. 构建模型

关键步骤:
(1) init() 构建子模块;
(2) forward() 拼接子模块;

2. torch.nn

主要包含: Parameter + Module + functional + init

(1) nn.Parameter

张量, 表示可学习参数,如:weight、bias等;

(2) nn.Module
 所有网络层基类,管理网络属性;
 每个module含8个字典OrderDict()管理他的属性;module可以包含多个多个子module;
 每个module必须实现forward();
(3) nn.functional

函数具体实现,如:卷积、池化、激活函数等;

(4) nn.init

参数初始化方法;

3. Containers

主要包含: nn.Sequential + nn.ModuleList + nn.ModuleDict

(1) nn.Sequential

按顺序包装多个网络层;
特点:顺序性 + 自带forward()

(2) nn.ModuleList

像python list一样包装多个网络层;
特点:迭代性;
主要方法:append() 、extend()、 insert()

(3) nn.ModuleDict

像python dict一样包装多个网络层;
特点:索引性;
主要方法:clear()、 items()、 keys()、 values()、 pop()

4. 卷积

如:
nn.Conv2d(in_channels,
out_channels,
kernel_size,
stride=1,
padding=0,
dilation=1, # 空洞卷积大小
groups=1, # 分组卷积设置
bias=True,
padding_mode=‘zeros’) 对多个二维信号进行二维卷积

公式:
out_size = (in_size-kernel_size)/stride + 1 结果向上取整

5. 转置卷积

(反卷积 Deconvolution + 部分跨越卷积 Fractionally=strided Convolution)

本质:对图像作上采样;

nn.ConvTranspose2d(in_channels,
out_channels,
kernel_size,
stride=1,
padding=0,
output_padding=0,
groups=1, # 分组卷积设置
bias=True,
dilation=1,
padding_mode=‘zeros’)

公式:
out_size = (in_size-1)*stride + kernel_size

6. 池化

nn.MaxPool2d(kernel_size,
stride=None,
padding=0,
dilation=1, # 池化核间隔大小
return_indices=False, # 记录池化像素索引
ceil_model=False # 尺寸向上取整
) 对二维图像进行最大值池化

nn.AvgPool2d(kernel_size,
stride=None,
padding=0,
ceil_model=False,
count_include_pad=True, # 填充值用于计算
divisor_overide=None # 除法因子
) 对二维图像进行平均值池化

nn.MaxUnpool2d(kernel_size,
stride=None,
padding=0) 对二维图像进行最大值池化上采样

7.线性层

nn.Linear(in_features,
out_features,
bias=True)

8.激活函数

nn.Sigmoid
nn.tanh
nn.ReLU
nn.LeakyReLU
nn.PReLU
nn.RReLU

你可能感兴趣的:(pytorch,深度学习)