PyTorch 3:神经网络的搭建


访问作者github: https://github.com/NefelibataBIGR/PyTorch_Notes ,获取笔记代码

五、神经网络的搭建

具体代码见Python>pytorch文件中的 ==nn.ipynb== 文件

1. nn.Module

  • 骨架

  • torch.nn.Module()

    • 搭建的神经网络都是继承这个类
  • 官方给的例子:

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module): # 继承Module类
    def __init__(self) -> None:
        super().__init__() # 调用父类(Module)的初始化函数
        self.conv1 = nn.Conv2d(1, 20, 5) # 自己写,定义卷积1操作
        self.conv2 = nn.Conv2d(20, 20, 5) # 自己写,定义卷积2操作

    def forward(self, x): # 前向传播函数
        x = F.relu(self.conv1(x)) # 先卷积1再经过relu层
        return F.relu(self.conv2(x)) # 再卷积2最后经过relu层,最后输出

注意理解每一行在干什么

2. 卷积层

3. 池化层

  • 以最大池化为例(最常用)

  • nn.MaxPool2d()

    • 注意输入tensor的形状要求

    • 参数:

      • kernel_size:池化核的大小
      • stride:步长,默认为池化核的大小
      • padding:边界0填充,默认=0
      • ceil_mode:默认=False,=True向上取整,即不足池化核大小也保留边界余量取最大池化
    • 输出长宽计算(参数根据这个来取值):
      image.png

4. 非线性激活层

5. 线性层 与 其他层、模型

  • 其他层:

    • 归一化层(Normalization Layers)
    • RNN相关层(Recurrent Layers)
    • Transformer层(Transformer Layers)
    • Dropout层(Dropout Layers)
  • 都可以在官方文档里面找到

  • 模型:

    • torchvision.models里面很多现成的模型(图像视觉方面)
  • 线性层 / 全连接层(Linear Layers)

    • nn.Linear()
      • 参数:
        • in_features:输入特征数
        • out_features:输出特征数(即神经元个数)
        • bias:是否有设置偏置项,默认=True设置

6. ==nn.Sequential==

  • 类似pipline,模型的工作流
  • 可以减轻工作量

文章作者: Nefelibata BIGR
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Nefelibata BIGR !
  目录