在用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.contrib.data.Dataset读取数据集时的buffer概念展开。介绍了buffer是缓存,buffer_size是放入缓存的样本个数。探讨了prefech与shuffle缓存的关系、执行顺序及buffer_size设置等问题,还提及了相关参考资料。

被折叠的 条评论
为什么被折叠?



