PyTorch Introduction
目录
Training & Testing Neural Networks in Pytorch
What is PyTorch
Training & Testing Neural Networks in Pytorch

Dataset & Dataloader



概念解析
1. Batch(批次)
-
定义:
-
Batch 是指在一次模型参数更新中使用的数据子集。
-
将整个数据集分成多个较小的批次,每个批次包含一定数量的样本。
-
-
作用:
-
内存效率:一次性加载整个数据集可能会占用大量内存,而分批加载可以减少内存占用。
-
计算效率:使用小批次数据可以加速模型训练,尤其是在 GPU 上。
-
梯度更新:在每次批次处理后更新模型参数(如使用梯度下降法)。
-
-
批次大小(Batch Size):
-
批次大小是一个超参数,表示每个批次中包含的样本数量。
-
常见的批次大小有 32、64、128 等。
-
较小的批次大小可以提高训练速度,但可能导致梯度更新不稳定。
-
较大的批次大小可以提高梯度更新的稳定性,但会增加内存需求。
-
-
示例:
-
假设数据集有 1000 个样本,批次大小为 32,那么总共有 ⌈1000/32⌉=32⌈1000/32⌉=32 个批次(最后一个批次可能不足 32 个样本)。
-
2. Epoch(轮次)
-
定义:
-
Epoch 是指模型在整个数据集上训练一次的过程。
-
一个 epoch 包含对所有批次的一次完整遍历。
-
-
作用:
-
通过多个 epoch,模型可以多次学习数据集中的模式,从而提高性能。
-
每个 epoch 结束后,可以评估模型的性能(如计算损失或准确率)。
-
-
示例:
-
假设数据集有 1000 个样本,批次大小为 32,那么一个 epoch 包含 32 个批次的训练。
-
如果训练 10 个 epoch,则模型会遍历整个数据集 10 次。
-
3. Shuffle(打乱)
-
定义:
-
Shuffle 是指在每个 epoch 开始时随机打乱数据顺序。
-
-
作用:
-
防止过拟合:打乱数据顺序可以防止模型过拟合到数据的特定顺序。
-
提高泛化能力:确保模型在每个 epoch 中看到不同的数据分布,从而提高泛化能力。
-
-
使用场景:
-
通常在训练时启用 shuffle,测试时禁用 shuffle。
-
在 PyTorch 的
DataLoader中,可以通过shuffle=True启用打乱。
-
-
示例:
-
假设数据集为
[1, 2, 3, 4, 5],打乱后可能变为[3, 1, 5, 2, 4]。
-

但事无绝对,如果用单个sample进行梯度优化,就是SGD(Stochastic Gradient Descent)

Tensors




torch.nn
Network Layers 








Neural Network Training




概念解析
在机器学习中,Validation(验证集) 和 Test(测试集) 是两个非常重要的概念,它们用于评估模型的性能,但目的和使用方式有所不同。以下是它们的区别和各自的作用:
1. Validation Set(验证集)
-
定义:
-
验证集是从训练数据中划分出来的一部分数据,用于在训练过程中评估模型的性能。
-
-
作用:
-
模型调参:用于调整超参数(如学习率、正则化系数等)。
-
防止过拟合:通过监控验证集上的性能,可以判断模型是否过拟合训练数据。
-
选择最佳模型:在训练过程中,选择在验证集上表现最好的模型。
-
-
使用时机:
-
在训练过程中使用,通常每个 epoch 结束后都会在验证集上评估模型。
-
-
特点:
-
验证集的数据不参与模型参数的更新。
-
验证集的性能用于指导训练过程。
-
2. Test Set(测试集)
-
定义:
-
测试集是从原始数据中划分出来的一部分数据,用于在训练结束后评估模型的最终性能。
-
-
作用:
-
评估泛化能力:测试集用于评估模型在未见过的数据上的表现,反映模型的泛化能力。
-
最终性能报告:测试集上的性能是模型最终的性能指标,通常用于论文或报告中。
-
-
使用时机:
-
在模型训练和调参完全结束后使用。
-
-
特点:
-
测试集的数据在训练过程中完全不可见。
-
测试集的性能不应影响模型的任何调整。
-
3. Validation 和 Test 的区别
| 特性 | Validation Set(验证集) | Test Set(测试集) |
|---|---|---|
| 目的 | 用于模型调参和防止过拟合 | 用于评估模型的最终性能 |
| 使用时机 | 训练过程中使用 | 训练结束后使用 |
| 数据可见性 | 在训练过程中可见,但不参与参数更新 | 在训练过程中完全不可见 |
| 影响模型调整 | 用于调整超参数和选择最佳模型 | 不影响模型的任何调整 |
| 性能指标 | 用于指导训练过程 | 用于最终性能报告 |
4. 数据集划分的常见比例
-
通常将原始数据划分为三部分:
-
训练集(Training Set):用于训练模型,通常占 70%-80%。
-
验证集(Validation Set):用于调参和模型选择,通常占 10%-15%。
-
测试集(Test Set):用于最终评估,通常占 10%-15%。
-
Save/Load
More

更多推荐










所有评论(0)