Pytorch

torch.nn

torch.nn的基础功能:

  1. 创建神经网络
  2. 训练神经网络
  3. 保存神经网络
  4. 恢复神经网络

nn.Linear类(全连接层)

用于创建一个多输入、多输出的全连接层,注意本身并不包含激活函数(Functional)。

CLASS torch.nn.Linear

  • 示例

    1
    model = nn.Linear(in_features=5, out_features=10, bias=True)
  • 参数说明
    in_features:
    输入的二维张量的大小。一般大小为 n×in \times i。其中,nn 代表样本数(batch size),ii 代表特征数。对于图片数据,特征数可能是多个维度相乘的形式。

    out_features:
    输出的二维张量的大小。这个参数指定了线性层输出的特征维度。

nn.functional(常见函数)

nn.functional定义了创建神经网络所需要的一些常见的处理函数。如没有激活函数的神经元,各种激活函数等。
torch.nn.functional

  • 示例

    1
    2
    output = nn.functional.relu(input)
    output = nn.functional.sigmoid(input)
  • 参数说明
    in_features:
    一般大小为 n×in \times i。其中,nn 代表样本数(batch size),ii 代表特征数。对于图片数据,特征数可能是多个维度相乘的形式。

nn.Xxx和nn.functional.xxx的差别
(1)大小写(2)nn.Xxx的属性更多

nn.Module

一个抽象概念,表示一个网络层,或者一个网络

维度问题

  • Epoch:
    时期、轮次。当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个epoch
  • Batch:
    批。一个Epoch的样本数量可能太过庞大,需要把它分成多个小块,也就是分成多个Batch来进行训练
  • Batc_Size:
    每批样本的大小。Batch Size变大,梯度变准确,但是对计算资源的要求也变大。

处理技巧

  • Dropout
    在训练神经网络时随机丢弃(即设置为零)网络层中的一部分神经元输出。这是正则化技术的一种,旨在减少模型的过拟合,提高模型的泛化能力。
  • FeedForward
    用于增加模型的非线性能力
  • NormLayer
    稳定训练过程和加速收敛

写在后面:如何判断你对Pytorch有一定的了解?

答案来自:KIMI1.5

  1. 什么是张量(Tensor)?它和 NumPy 中的数组有什么区别和联系?
    张量是 PyTorch 中的基本数据结构,用于存储数据和计算操作。与 NumPy 数组相比,张量可以利用 GPU 加速计算,且与 PyTorch 的自动求导(autograd)系统紧密结合,方便进行梯度计算和模型训练。
  2. 梯度爆照和梯度消失
    梯度消失:梯度趋近于零,网络权重无法更新或更新的很微小,网络训练再久也不会有效果;
    梯度爆炸:梯度呈指数级增长,变的非常大,然后导致网络权重的大幅更新,使网络变得不稳定。
    出现原因:反向传播中多层网络导致的。1.1^x 0.9^x
    梯度爆照的处理:
    梯度裁剪,梯度超过这个阈值,那么就将其强制限制在这个范围之内。
    网络权重正则化
    换激活函数:ReLu,Leaky Relu
    BatchNorm
    梯度消失:
    换激活函数:ReLu,Leaky Relu
    BatchNorm
    残差结构