tf.data.Dataset.interleave

本文对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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值