Pytorch深度学习框架-train

前言
在官方文档中,这一部分应当是有一些前置的内容,但是哪些内容更加偏向于细节,读起来就比较的让人摸不着头脑,因此作者训练部分提前到了前面。
模型训练
模型训练是一个迭代的过程,在每一次迭代中,都会通过机器学习的方式对于模型的参数进行优化。最终,就可以得到一个训练出来的结果。
超参数
在进行模型训练之前,可以先将超参数定义下来,超参数是为了帮助我们进行控制模型的训练速度。
一般需要定义的超参数有:
- Number of Epochs - 迭代数据集的次数
- Batch Size - 在更新参数之前通过网络传播的数据样本数
- 学习率 - 在每个批次更新模型参数的量。较小的值会导致学习速度变慢,而较大的值可能会导致训练期间出现不可预知的行为。
1 | # 定义超参数 |
损失函数和优化算法
在进行模型训练之前,除了预先定义好超参数,还需要指定要使用的损失函数和优化算法
损失函数
损失函数测量获得的结果与目标值的差异程度,这是在训练过程中想要最小化的损失函数。
如可以用如下方式指定损失函数
1 | # Initialize the loss function |
优化算法
优化是调整模型参数以减少每个训练步骤中的模型误差的过程。优化算法定义了此过程的执行方式。
如可以用如下方式指定优化算法
1 | optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) |
此外,需要特别提到的是,在正式的训练中,优化的步骤为:
调用重置模型参数的梯度。默认情况下,梯度累加;为了防止重复计数,我们在每次迭代时都将它们显式归零。
optimizer.zero_grad()
通过调用 .PyTorch 会根据每个参数来存储损失的梯度。
loss.backward()
一旦我们有了梯度,我们就会调用以通过在 backward pass 中收集的梯度来调整参数。
optimizer.step()
迭代训练
正如之前所说的,训练是一个迭代的过程,如,我们可以通过下列方式定义用于训练的函数
1 | def train_loop(dataloader, model, loss_fn, optimizer): |
接下来,调用上述函数,我们就可以优化模型的参数,并跟踪当前的神经网络效果。
1 | loss_fn = nn.CrossEntropyLoss() |
后记
在了解了这些之后,基本上就可以进行自己的模型的训练了。
同系列
Pytorch深度学习框架-insatll
Pytorch深度学习框架-tensor
Pytorch深度学习框架-data
Pytorch深度学习框架-transform
Pytorch深度学习框架-build
Pytorch深度学习框架-train
Pytorch深度学习框架-save-load
- Title: Pytorch深度学习框架-train
- Author: 呆呆的猪胖胖
- Created at : 2025-04-01 14:18:00
- Updated at : 2025-05-13 15:34:47
- Link: https://blog.cflmy.cn/2025/04/01/Technology/AI/Pytorch-train/
- License: This work is licensed under CC BY-NC-SA 4.0.