培训、验证、测试批量大小比率

Training, Validation, Testing Batch Size Ratio

我在 Tensorflow 上使用 Inception 进行迁移学习,这是我遵循的训练代码:https://raw.githubusercontent.com/tensorflow/hub/master/examples/image_retraining/retrain.py

在代码的底部,我们可以根据我们的数据集指定参数。 (有训练、验证、测试百分比训练、验证、测试批量大小
假设我有一个非常大的数据集(100 万)并且我已经将 training, validation, testing percentage 设置为 75:15:10

但是我不知道如何正确设置批处理参数:

目前,我将 train_batch_size 设置为 64,是否需要为 validation_batch_size 设置相同的值?还是应该大于或小于 train_batch_size?

因此,训练集、测试集和验证集将成为您的主要数据集的一部分。
假设您的数据集有 x 个观察值(即 x 行) 当您执行 train, validation and test spilts 时,您会将其按您指定的百分比金额拆分。
百分比总和应为 100%

因此,当您进行 75:15:10 拆分时。这意味着 x 行的数据将被拆分为 x * .75 rows 作为训练集。在剩余的 25% -- y 数据中,y * .15 将是验证集,其余的将是测试集。
如您所见,它们加起来等于 100%

通常最佳做法是使用火车,测试 75:25 的拆分。

要详细了解它们为何重要,请阅读此 Medium Article

Let's say I have a very large dataset (1 mil) and I already set the training, validation, testing percentage to 75:15:10.

对于像您提到的非常大的数据集,您可以使用 98:1:1

您可以按照其他答案中关于数据集拆分比率的建议进行操作。但是,批量大小与您拆分数据集的方式完全没有任何关系

批量大小决定了 training/inference 并行处理的训练样本数量。训练时的批量大小会影响训练收敛的速度和效果。您可以找到有关此效果的讨论 here。因此,对于 train_batch_size,选择既不太小也不太大的批量大小是值得的(如先前链接的讨论中所述)。对于某些应用程序,使用尽可能大的训练批次实际上是可取的,但一般来说,您 select 通过实验和验证。

但是,对于 validation_batch_sizetest_batch_size,您应该选择您的硬件可以处理的最大批大小,而不会 运行 内存不足和崩溃。找到这个通常是一个简单的试错过程。推理时的批量越大,速度就越快,因为可以并行处理更多的输入。

编辑:这是来自 Goodfellow 等人的深度学习书籍的 additional useful link(第 276 页),用于训练批量大小权衡。