培训,验证,测试批次大小比率

时间:2019-01-29 02:49:48

标签: python tensorflow conv-neural-network training-data

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

在代码的底部,我们可以根据数据集指定参数。 (有培训,评估,测试百分比培训,评估,测试批量
假设我有一个非常大的数据集(一百万),并且我已经将function AddRecord(that, id, name) { var table = document.getElementById("table2"); var row = table.insertRow(1); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); cell1.innerHTML = id; cell2.innerHTML = name; 设置为 75:15:10

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

  • train_batch_size
  • validation_batch_size
  • test_batch_size

现在,我将training, validation, testing percentage设置为64,是否需要为train_batch_size设置相同的值?还是应该大于或小于validation_batch_size

3 个答案:

答案 0 :(得分:1)

对于数据集拆分率,您可以遵循其他答案的建议。但是,批量大小与您分割数据集的方式完全无关。

批处理大小决定并行处理多少训练示例以进行训练/推理。训练时的批次大小会影响训练收敛的速度和程度。您可以找到有关这种影响的讨论here。因此,对于train_batch_size,值得选择既不要太大也不要太大的批处理大小(如先前链接的讨论中所述)。对于某些应用程序,实际上可能需要使用尽可能多的培训批次,但是通常,您可以通过实验和验证来选择它。

但是,对于validation_batch_sizetest_batch_size,您应该选择硬件可以处理的最大批处理大小,而不会耗尽内存并避免崩溃。找到这个通常是一个简单的反复试验过程。推断时您的批次大小越大,速度越快,因为可以并行处理更多输入。

编辑:这是additional useful link(第276页),是Goodfellow等人的深度学习书中的训练批量大小折衷方案。

答案 1 :(得分:0)

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

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

通常,最佳实践是使用75:25的火车,测试车厢。

要了解有关其重要性的更多信息,请阅读此Medium Article

答案 2 :(得分:0)

  

假设我有一个非常大的数据集(一百万),并且我已经将训练,验证和测试百分比设置为75:15:10

在您提到的非常大的数据集上,可以使用98:1:1