Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于从对RAM来说太大的数据中创建Tensorflow数据集的问题(使用洗牌)_Python_Numpy_Tensorflow - Fatal编程技术网

Python 关于从对RAM来说太大的数据中创建Tensorflow数据集的问题(使用洗牌)

Python 关于从对RAM来说太大的数据中创建Tensorflow数据集的问题(使用洗牌),python,numpy,tensorflow,Python,Numpy,Tensorflow,我有60 GB的文件,分布在20个文件中。我想在tensorflow中建立一个神经网络来学习这些数据 我计划在19个文件上进行训练,以便在1个文件上进行测试。每个文件大约有80列x数据和1列分类y数据。数据类型为np.float64和np.int64。我无法将数据类型缩减为较小的大小,因为舍入错误会丢失有价值的数据 当我加载单个文件时,我将数据加载到我的神经网络中没有问题,但是我在训练方面遇到了问题,因为我需要学习所有数据。我无法按顺序学习文件,例如,按顺序1、2、3、…、19训练文件1-19。

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

我计划在19个文件上进行训练,以便在1个文件上进行测试。每个文件大约有80列x数据和1列分类y数据。数据类型为np.float64和np.int64。我无法将数据类型缩减为较小的大小,因为舍入错误会丢失有价值的数据

当我加载单个文件时,我将数据加载到我的神经网络中没有问题,但是我在训练方面遇到了问题,因为我需要学习所有数据。我无法按顺序学习文件,例如,按顺序1、2、3、…、19训练文件1-19。我需要对每个历元的所有数据进行洗牌


我读过这样的帖子,看起来和我的问题几乎一样。然而,我的问题不同,因为我需要在多个文件之间移动。我在stackoverflow上没有看到这样的问题得到回答

您链接到的帖子解释了如何为19个数据文件中的每个文件获取TFRecordDataset。然后,您可以使用tf.data.Dataset.zip将tfrecorddataset组合成一个数据集。在这个数据集上,您可以应用shuffle。请参阅此以了解详细信息


shuffle tf.data.Dataset的工作方式是加载数据缓冲区并对其进行洗牌。一旦它被消耗,下一个缓冲区大小的数据块就会被加载和洗牌。我想如果需要的话,你可以通过把19个文件分成更小的文件来增加随机性,但是你会付出计算效率的代价

据我所知,您有几个选项:1从1-19中随机选择文件而不进行替换,以获得一些随机洗牌2预先洗牌文件,例如混合2个文件3、15、5、10等的辅助函数。。。。将更多的洗牌叠加在一起以获得更多的洗牌3将数据集分解为更多的文件,例如100个文件而不是20个文件。你为什么不试试这个?4使用链接问题中评估的tf.data.tf记录。这样不行吗?为什么不呢?也许你可以使用或来连接tf数据管道。在这种情况下,您的周期长度可能是20。您可以使用定义一个生成器,该生成器洗牌每个文件中的数据并生成洗牌数据,在此基础上,使用num_parallel_calls参数应用interleave,或使用sloppy参数应用parallel_interleave