关于shuffle的原理

来源:7-7 文本生成实战之构建模型

慕斯8458511

2021-04-12

查阅了api和一些文章对于shuffle都没有一个很好的解释。
TensorFlow2的api中:
For instance, if your dataset contains 10,000 elements but buffer_size is set to 1,000, then shuffle will initially select a random element from only the first 1,000 elements in the buffer. Once an element is selected, its space in the buffer is replaced by the next (i.e. 1,001-st) element, maintaining the 1,000 element buffer.
还有知乎的一篇文章:buffer_size 规定了乱序缓冲区的大小,且要求缓冲区大小大于或等于数据集的完整大小;
帮助手册中的例子如下:
假设数据集的大小为10000,buffer_size的大小为1000,最开始算法会把前1000个数据放入缓冲区;当从缓冲区的这1000个元素中随机选出第一个元素后,这个元素的位置会被数据集的第1001个元素替换;然后再从这1000个元素中随机选取第二个元素,第二个元素的位置又会被数据集中的第1002个数据替换,以此类推…
但是对于buffer里的数据是应该如何重新再放入数据集中没有很好的解释。
d = np.arange(0,6).reshape([6,])
dataset = tf.data.Dataset.from_tensor_slices(d)
dataset.shuffle(buffer_size=1)
对于这段代码来说,buffer_size=1时出现的一个结果是2 3 1 5 0 4 buffer_size=3出现的一个结果是1 2 4 0 5 3计算的过程是怎么样的,期待老师解惑

写回答

1回答

正十七

2021-04-14

见:https://coding.imooc.com/learn/questiondetail/vQW1lPEpgKj6yE9A.html

0
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程