目录

What is PyTorch​

Training & Testing Neural Networks in Pytorch

Dataset & Dataloader

概念解析

1. Batch(批次)

2. Epoch(轮次)

3. Shuffle(打乱)

Tensors

torch.nn

Neural Network Training

概念解析

1. Validation Set(验证集)

2. Test Set(测试集)

3. Validation 和 Test 的区别

4. 数据集划分的常见比例

Save/Load

​More


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

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐