我有一个大型数据集 . 它目前采用使用 numpy.array.tofile()
创建的未压缩numpy数组文件的形式 . 每个文件大约有100000行,每行363个浮点数 . 共有192个文件,共52 Gb .
我想将这个数据的随机五分之一分成一个测试集,并将该测试集的随机五分之一分成一个验证集 .
另外,我一次只能训练1 Gb(GPU的板载内存限制)所以我需要随机化所有数据的顺序,这样我就不会通过按顺序训练数据来引入偏差集 .
我的主要内存是8 Gb . 任何人都可以推荐一种随机化和分区这个巨大数据集的方法吗?
2 回答
您可以为每一行分配唯一的序列号,然后选择这些数字的随机样本,然后将每个相关行连续提取到新文件中 .
我在External shuffle: shuffling large amount of data out of memory找到了我需要的答案
基本上,你找到一个足够随机的数字哈希(在这种情况下我使用Murmur3),然后你应用外部合并排序 .