tf.data.Dataset.interleave() 最通俗易懂的使用详解(有图有真相)

原文链接:https://blog.csdn.net/menghuanshen/article/details/104240189

最近学习tensorflow,对于这个函数tf.data.Dataset.interleave()始终有点晕乎,即使搞明白了,用不了多久又忘了,在网上查了查,发现很少有人能把这个函数讲清楚。趁着现在还明白,记录下来——备忘+助友。

interleave()Dataset的类方法,所以interleave是作用在一个Dataset上的。
语法:

interleave(
    map_func,
    cycle_length=AUTOTUNE,
    block_length=1,
    num_parallel_calls=None
)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

解释:

  1. 假定我们现在有一个Dataset——A
  2. 从该A中取出cycle_length个element,然后对这些element apply map_func,得到cycle_length个新的Dataset对象。
  3. 然后从这些新生成的Dataset对象中取数据,取数逻辑为轮流从每个对象里面取数据,每次取block_length个数据
  4. 当这些新生成的某个Dataset的对象取尽时,从原Dataset中再取cycle_length个element,,然后apply
    map_func,以此类推。

举例:

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
  • 2
  • 3
  • 4
  • 5
  • 6

输出结果:

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, 

 
 
  • 1

上面程序的图示,看示意图可能更清晰:

在这里插入图片描述
其中map_func在这里是重复6次-repeat(6)。

常见case:
dataset里面存储文件名, 将所有文件读取出来,产生一个大数据集

更详细内容可以参考官方文档

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值