【问题标题】:Dataset does not fit in memory数据集不适合内存
【发布时间】:2017-10-09 00:26:20
【问题描述】:

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

这不是TFLearn 问题。

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

TFLearn 示例:

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

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

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

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

【问题讨论】:

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

标签: memory-management tensorflow out-of-memory tflearn


【解决方案1】:

您可以使用Dataset api

“Dataset API 支持多种文件格式,因此您可以处理无法放入内存的大型数据集”

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多