【问题标题】:Consuming big data by Tensorflow通过 TensorFlow 消费大数据
【发布时间】:2018-10-24 15:51:42
【问题描述】:

假设,我有一个庞大的对象列表,例如,每个对象都可以是一个 numpy 数组列表。

将此数据集传递给 tensorflow 的最佳方法是什么?

我希望能够随机打乱数据并形成批次。是否值得使用标准 python(numpy) 程序对数据集进行洗牌并形成批次,然后使用 tf.data.Dataset.from_generator() 之类的东西?

由于tf.GraphDef 协议缓冲区的大小限制(根据 Tensorflow 文档),将完整数据集转换为 tf.Tensor 的直接方法似乎没用。

【问题讨论】:

  • 你能用字节来定义“巨大”吗?
  • @cricket_007 超过 10GB
  • 您是否需要一次性获取整个数据集?还是你使用批处理?
  • 尽管this thread 与 Tensorflow 无关,但它仍然可以为您提供很多想法。

标签: python tensorflow deep-learning bigdata


【解决方案1】:

您的数据看起来很大,但仍然小到足以放入内存?如果是这样,那么您与tf.data.Dataset.from_generator() 走在了正确的轨道上。然后你可以用类似的东西洗牌和批处理

import itertools

# your data
data = range(1024)
def gen():
  for item in data:
    yield data

ds = Dataset.from_generator(
    gen, tf.int64, tf.TensorShape([])).shuffle(buffer_size=128).batch(batch_size=4)
value = ds.make_one_shot_iterator().get_next()

sess.run(value)  # array([0, 1, 2, 3])

或者,您可以将数据转储到 TFRecord 文件并使用 TFRecordDataset 从中读取。这个test 应该可以帮助您入门。

【讨论】:

    猜你喜欢
    • 2017-11-08
    • 2019-04-19
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2021-07-11
    • 2023-04-11
    相关资源
    最近更新 更多