Memory management 数据集不适合内存

Memory management 数据集不适合内存,memory-management,tensorflow,out-of-memory,tflearn,Memory Management,Tensorflow,Out Of Memory,Tflearn,我有一个类似于MNIST的数据集,它不适合内存(进程内存,不是gpu内存)。 我的数据集是4GB 这不是TFLearn问题 据我所知,model.fit需要一个数组用于x和y TFLearn示例: model.fit(x,y,n_epoch=10,validation_set=(val_x,val_y)) 我想知道是否有一种方法可以传递“批迭代器”,而不是数组。 基本上,对于每个批次,我都会从磁盘加载必要的数据 这样我就不会遇到进程内存溢出错误 编辑 np.memmap可能是一个选项。但是我看不

我有一个类似于
MNIST
的数据集,它不适合内存(进程内存,不是gpu内存)。 我的数据集是4GB

这不是
TFLearn
问题

据我所知,
model.fit
需要一个数组用于
x
y

TFLearn示例:

model.fit(x,y,n_epoch=10,validation_set=(val_x,val_y))

我想知道是否有一种方法可以传递“批迭代器”,而不是数组。 基本上,对于每个批次,我都会从磁盘加载必要的数据

这样我就不会遇到进程内存溢出错误

编辑
np.memmap
可能是一个选项。但是我看不出如何跳过组成标题的前几个字节。

您可以使用

“数据集API支持多种文件格式,因此您可以处理不适合内存的大型数据集”

基本上,输入管道将成为图形的一部分


如果内存仍然存在问题,那么您可以使用生成器创建
tf.data.Dataset
。此外,您还可以通过准备tfrecords来创建数据集,从而可能使过程更快。

您可能需要使用队列来适当地设置批大小和容量。
tf.train.shuffle\u批处理应该在这里工作。使用numpy.memmap的offset参数,该参数接受从文件开头跳过的字节数。Numpy.float32==4字节,float64==8字节,等等