Deep learning和tensorflow学习记录(二十五):tf.contrib.data.parallel_interleave

tf.contrib.data.parallel_interleave(
    map_func,
    cycle_length,
    block_length=1,
    sloppy=False,
    buffer_output_elements=None,
    prefetch_input_elements=None

)

定义于:tensorflow/contrib/data/python/ops/interleave_ops.py。

Dataset.interleave()变换的并行版本。

parallel_interleave()映射map_func通过输入以生成嵌套数据集,并且输出其元素隔行交错。与tf.data.Dataset.interleave不同的是 ,它从cycle_length嵌套数据集中并行的获取元素,从而增加了吞吐量,尤其是在存在落后者的情况下。此外,sloppy参数可以用来提高性能,通过放宽在确定性顺序中产生输出的要求,并允许实现跳过在请求时数据元素未准备好的嵌套数据集。

用法示例:

# Preprocess 4 files concurrently.
filenames = tf.data.Dataset.list_files("/path/to/data/train*.tfrecords")
dataset = filenames.apply(
    tf.contrib.data.parallel_interleave(
        lambda filename: tf.data.TFRecordDataset(filename),
        cycle_length=4))
警告:如果sloppy是True,则生成的元素的顺序不确定。

参数:

map_func:一个函数,将嵌套结构的tensor映射到一个Dataset。

cycle_length:Dataset并行交错的输入的数量。

block_length:Dataset在前进到下一个输入之前从输入Dataset中拉出的连续元素的数量 。

sloppy:如果为false,则元素以确定的顺序生成。否则,为了方便起见,允许以非确定性顺序生成元素。

buffer_output_elements:应该缓冲的每个迭代器交错的元素数量(每个交叉迭代器的转换,类似于.prefetch())。

prefetch_input_elements:在需要交错之前,转换为迭代器的输入元素的数量。

返回:

一个Dataset转换函数,它可以传递给 tf.data.Dataset.apply。

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/81065801
今日推荐