模型网格结构搭建
模型网格结构搭建
nn.module类
- 我们在定义自已的网络的时候,需要继承nn.Module类,并重新实现构造函数__init__构造函数和forward这两个方法
参考链接:
使用Module类来自定义模型
nn.Sequential类
- 当一个模型较简单的时候,我们可以使torch.nn.Sequential类来实现简单的顺序连接模型。这个模型也是继承自Module类的
参考学习链接:
其有三种实现方法
- 直接定义
- 添加名称
- add_module
使用Sequential类来自定义顺序连接模型
nn.Conv2d()
二维卷积
- 前三个参数是必须手动提供的,后面的有默认值 [外链图片转存中…(img-czTR1FdI-19629ca5417095763f4975e93155.png)
参数详解链接:Pytorch的nn.Conv2d()详解
nn.BatchNorm2d()
在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理,这使得数据在进行Relu之前不会因为数据过大而导致网络性能的不稳定
- 数学原理:
与LayerNorm的区别:
- BathcNorm是在通道channel维,对一个batch中的每个样本的特定维进行归一化。
- LayerNorm是在样本维,对单个样本的所有通道(特征)进行归一化
具体请看:
nn.BatchNorm2d用法详解
BatchNorm和LayerNorm的区别
nn.Dropout2d
Dropout2d 的赋值对象是彩色的图像数据(batch N,通道 C,高度 H,宽 W)的一个通道里的每一个数据,即输入为 Input: (N, C, H, W) 时,对每一个通道维度 C 按概率赋值为 0。
参考链接:PyTorch 中的 dropout Dropout2d Dropout3d
激活函数
LeakyReLu
in-palce操作:in-place 操作是直接改变给定线性代数、向量、矩阵(张量)的内容而不需要复制的运算。