训练 NN 时,数据加载器如何处理大型数据集?

数据挖掘 数据 大数据
2022-02-16 16:22:58

在训练神经网络时,您通常如何组织大型数据集以便于加载?我有一个无法放入内存的大型数据集,它由 200,000 个样本组成,其中 10k 样本存储在分组文件中。总共大约有 50GB 的数据。

我可以将分组分开以生成 200,000 个单独的文件,但我不确定这是否是正确的做法,因为系统在训练时需要对文件系统进行多次调用。

训练海量数据集的系统如何工作?(例如图像网)。

1个回答

对于大型数据集,可用内存的限制会阻止您同时加载所有数据。通常所做的是将您的数据分批提供给网络。批次只是数据的分组。批量大小最大值受可用内存限制。如果您使用 Keras,目录中的 ImageDataGenerator.flow 提供了一种方便的方式来将您的数据批量呈现给网络。文档在这里. 批量呈现数据还有一个好处。例如,如果您的数据包含 50,000 个样本并且它适合内存,您可以将 50,000 个样本提供给网络,并在数据前向传递后执行 1 步反向传播以调整权重。一个更好的解决方案是将您的数据分成多个批次,例如 10 个批次,每批 5,000 个样本。在这种情况下,如果启用网络进行批量训练,您可以获得 10 步的权重迭代,而不是单次迭代。这使网络能够以更低的计算成本更快地收敛。