21. 反向传播、优化器、模型的训练

反向传播、优化器、模型的训练
1. 什么是反向传播
  • 在我们从输入层对数据进行一系列的操作,包括特征提取、函数激活、维度变换等,从输入层到输出层的各种变换可以称为前向传播。前向传播的用处是为了对输入数据转换为我们需要的回归值或者标签类别值,但是这种输出结果往往是有偏差的,这种偏差是通过误差函数进行计算的。
  • 当我们构建了一个完整的前向传播结构后,就需要考虑如何使用误差来优化我们的网络结构。常见的优化算法包括梯度下降SGD,自适应学习率优化算法Adam等,这些都是基于梯度的优化算法。
  • 为了方便各种优化器对模型进行优化,反向传播使用Tensor数据结构,基于误差计算了各个参数的梯度并保存在了Tensor张量中。总而言之:在一个神经网络结构中,反向传播的主要作用就是计算每个权重的梯度,从而结合优化器指导调整这些权重,从而最小化损失函数,提高模型的预测精度!!
2. 基本的网络构建以及数据集准备
  • 我们延续使用之前针对CIFAR10的图像数据构建的网络结构,给出具体的网络结构构建的代码:

    class Model(nn.Module):
        def __init__(self):
            super().__init__()
            self.model = nn.Sequential(
                nn.Conv2d(3, 32, 5, padding=2),
                nn.MaxPool2d(2),
                nn.Conv2d(32, 32, 5, padding=2),
                nn.MaxPool2d(2),
                nn.Conv2d(3

你可能感兴趣的:(小土堆,--,Pytorch学习,pytorch)