最近学习tensorflow
,对于这个函数tf.data.Dataset.interleave()
始终有点晕乎,即使搞明白了,用不了多久又忘了,在网上查了查,发现很少有人能把这个函数讲清楚。趁着现在还明白,记录下来——备忘+助友。
interleave()
是Dataset
的类方法,所以interleave
是作用在一个Dataset
上的。
语法:
interleave(
map_func,
cycle_length=AUTOTUNE,
block_length=1,
num_parallel_calls=None
)
解释:
举例:
a = tf.data.Dataset.range(1, 6) # ==> [ 1, 2, 3, 4, 5 ]
# NOTE: New lines indicate "block" boundaries.
b=a.interleave(lambda x: tf.data.Dataset.from_tensors(x).repeat(6),
cycle_length=2, block_length=4)
for item in b:
print(item.numpy(),end=', ')
输出结果:
1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 4, 4, 5, 5, 5, 5, 5, 5,
上面程序的图示,看示意图可能更清晰:
常见case:
dataset里面存储文件名, 将所有文件读取出来,产生一个大数据集
更详细内容可以参考官方文档