Tensorflow管道,批量处理:初学者

时间:2018-07-24 14:36:05

标签: tensorflow queue dataset generator pipeline

我目前正在尝试实现我的第一个Tensorflow管道,即使我试图理解tf文档,我对此也有很多疑问。目前,我的代码如下:

import h5py
import tensorflow as tf
sess= tf.InteractiveSession()

batch_size = 10

class generator:
    def __init__(self, file):
        self.file = file

    def __call__(self):
        with h5py.File(self.file, 'r') as hf:
            for im in hf["data"]:
                yield tuple(im)

dataset = tf.data.Dataset().from_generator(generator('file.h5'),
                                       output_types= tf.uint8,
                                       output_shapes=(tf.TensorShape([6,4,128,128,3])))


dataset = dataset.batch(batch_size=FLAGS.batch_size)

iter = dataset.make_initializable_iterator()
el = iter.get_next()
with tf.Session() as sess:
    sess.run(iter.initializer)
    print('batch',sess.run(el).shape)

它之所以有效,是因为我获得了想要的东西,这意味着一个形状为[10,6,4,128,128,3]的数组。但是我不知道:

  • 如何在我选择的批次上而不是在整个数据集上应用一些预处理功能,因为我的h5文件约为100 GB。
  • 考虑到我无法在内存中加载整个数据集,如何改组数据集
  • 此生成器结构是否管理数据队列?我如何在神经网络中使用上一个批次的同时加载下一批的数据?它是自动完成的吗?我可以定义要在内存中存储的批次数量吗?

非常感谢您提供的有用帮助!

0 个答案:

没有答案