有关从对于RAM而言太大的数据(带混洗)创建Tensorflow数据集的问题

时间:2019-01-14 20:49:03

标签: python numpy tensorflow

我有60 GB的.npy文件分布在20个文件中。我想在tensorflow中建立一个神经网络来学习这些数据。

我计划训练19个文件,以便对1个文件进行测试。每个文件大约包含80列x数据和1列类别y数据。数据类型为np.float64np.int64。我无法将数据类型缩小为较小的尺寸,因为四舍五入会丢失有价值的数据。

当我加载单个文件时,我可以很容易地将数据加载到神经网络中,但是由于需要学习所有所有数据,因此在培训方面遇到了麻烦。我无法按顺序学习文件(例如,按文件1、2、3,...,19的顺序训练文件1-19)。我需要以某种方式对每个时期的所有数据进行全部洗牌。

我读过类似this one的帖子,看起来与我的问题几乎相同。但是,我的问题有所不同,因为我需要在多个文件之间进行混洗。我没有在stackoverflow上看到过这样的问题。

1 个答案:

答案 0 :(得分:0)

您链接到的帖子说明了如何为19个数据文件中的每个文件获取TFRecordDataset。然后,您可以使用tf.data.Dataset.zip将TfRecordDatasets组合到一个数据集中。您可以在此数据集上应用随机播放。有关详情,请参见此tensorflow tutorial

tf.data.Dataset改组的工作方式是加载数据缓冲区并将其改组。一旦消耗完,将加载并重新整理缓冲区的下一个数据块。我想您可以通过将19个文件分成较小的文件来增加随机性,但是您会付出计算效率的代价。