当前位置: 首页 > 工具软件 > Interleave > 使用案例 >

tf.data.Dataset.interleave

罗昱
2023-12-01

本文对tf.data.Dataset.interleave该方法做点笔记。

在tensorflow中数据处理通道中,有一个方法interleave,tf定义如下:

interleave(
    map_func, cycle_length=AUTOTUNE, block_length=1, num_parallel_calls=None
)
'''
cycle_length和block_length参数控制元素的生成顺序。 
cycle_length控制同时处理的输入元素的数量。 如果将cycle_length设置为1,则此转换将一次处理一个输入元素,并将产生与tf.data.Dataset.flat_map相同的结果。
通常,此转换将map_func应用于cycle_length输入元素,在返回的Dataset对象上打开迭代器,并在它们之间循环,从每个迭代器中生成block_length个连续元素,并在每次到达迭代器末尾时使用下一个输入元素。
'''

 

先上理解:通过实验,并从方法命名中体会到,该方法的目的是,提供读取数据集内容的方法

1.如何读取数据集内容?

两个例子:

eg1:

import tensorflow as tf

ds=tf.data.Dataset.range(1,4) #[1,2,3]
ds=ds.interleave(lambda x: tf.data.Dataset.from_tensors(x).repeat(5),
            cycle_length=3, block_length=2)

for d in ds:
    tf.print(d)

'''
output:
1
1
2
2
3
3
1
1
2
2
3
3
1
2
3

'''

ds=tf.data.Dataset.range(1,4) #[1,2,3]
ds=ds.interleave(lambda x: tf.data.Dataset.from_tensors(x).repeat(5),
            cycle_length=3, block_length=2)

for d in ds:
    tf.print(d)
'''
output:
1
1
1
2
2
2
3
3
3
1
1
2
2
3
3
'''

eg2:

import tensorflow as tf
files = tf.data.Dataset.list_files("path_to_dataset/train-*.tfrecord")#符合该模式的所有tfrecord文件并组成Dataset
dataset = files.interleave(tf.data.TFRecordDataset)#将Dataset中每个元素(即每个tfrecord文件)用TFRecordDataset读取,并迭代输出元素中的内容直至内容迭代完毕,继续读取下一个元素。
dataset = dataset.map(map_func=parse_fn)#对每次经过interleave处理的内容解析,即解析tfrecord内容。

reference:

[1] https://tensorflow.google.cn/versions/r1.15/api_docs/python/tf/data/Dataset?hl=en

[2] https://mp.weixin.qq.com/s__biz=MzU1OTMyNDcxMQ==&mid=2247485431&idx=1&sn=c31c56efbcba93bb460ed27e9ca1cba9&chksm=fc184cbfcb6fc5a91d579b339da14e9b5cbaa0b8e21dc428e6900ee86aa05e69335097a56310&mpshare=1&scene=1&srcid=0114FQSOUcr2wMF9JKycFQ27#rd

 类似资料:

相关阅读

相关文章

相关问答