tf.contrib.data.Dataset 读取数据的原理--buffer

本文围绕TensorFlow中tf.contrib.data.Dataset读取数据集时的buffer概念展开。介绍了buffer是缓存,buffer_size是放入缓存的样本个数。探讨了prefech与shuffle缓存的关系、执行顺序及buffer_size设置等问题,还提及了相关参考资料。

在用tf.contrib.data.Dataset读取数据集数据时,会遇到一个概念/参数: buffer

buffer的含义是缓存

buffer_size的含义是:放入缓存的样本的个数

prefech的缓存与shuffle的缓存是相同的吗?谁是谁的子集吗?还是谁大就以谁为准?

有几点是确定的:tf.contrib.data.Dataset 按顺序从数据集中读取数据放入buffer

                            shuffle仅仅对buffer中的样本进行打乱,或者随机采样

                           在训练时,提取的每个batch的数据都是从buffer中提取的,提取之后,tf.contrib.data.Dataset 会继续从本地数据集中读取数据放入buffer,保持buffer中的样本数目不变

                           prefech创建buffer的好处是,在GPU运行的时候,cpu没闲着,在执行把样本放入缓存的操作

 

所以先prefech还是先shuffle?先prefech好一些?prefech与shuffle共享的是同一块缓存?二者的buffer_size设置为相等是最好的?

tf.data.Dataset.prefech 应该与 tf.data.Dataset.from_generator搭配使用更好一些
tf.data.Dataset.from_generator可以通过设置生成器,决定以怎样的规则向buffer区填充样本,否则的话,会导致tf.data.Dataset按照数据集固有顺序读取样本进入buffer

参考:buffer_size的含义——Dataset.map , Dataset.prefetch and Dataset.shuffle

tf.data.Dataset.shuffle(buffer_size)中buffer_size的理解

tensorflow数据篇(三)——使用tf.data建立数据通道

tensorflow数据篇(二)——tf.data.Dataset常用函数

tf.data.Dataset图像预处理详解

tf.data.Dataset的一些小坑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值