我试图使用tf.data.Dataset
和TFRecordDataset
来并行化我的输入管道。在
files = tf.data.Dataset.list_files("./data/*.avro")
dataset = tf.data.TFRecordDataset(files, num_parallel_reads=16)
dataset = dataset.apply(tf.contrib.data.map_and_batch(
preprocess_fn, 512, num_parallel_batches=16) )
如果输入是AVRO文件(类似于JSON),我不确定如何编写preprocess_fn
。在
目前,我正在使用tf.data.Dataset.from_generator
并将pyavroc
或类似avro读取器解析的avro记录提供给它。但我不确定如何将其并行化,因为from_generator
方法没有num_parallel_reads
选项。在
逐个文件读取文件显然是一个瓶颈,我看到所有内核在耗尽前一批数据后都在等待数据。在
如何优化这两种方法?在
目前没有回答
相关问题 更多 >
编程相关推荐