#深入探究# Tensorflow.Data.shuffle 方法的实现原理和 buffer_size 参数的作用

今天在学习 tensorflow 中 datasetshuffle方法时,对 buffer_size 这个参数一直不理解
找遍了全网,都只是说 buffer_size 数值越大,混乱程度越好,没有从原理上解释这个参数是什么意思,
于是我查询了shuffle方法官方帮助手册,里边的英文原文如下:

Randomly shuffles the elements of this dataset.
This dataset fills a buffer with buffer_size elements, then randomly samples elements from this buffer, replacing the selected elements with new elements. For perfect shuffling, a buffer size greater than or equal to the full size of the dataset is required.
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.

reshuffle_each_iteration controls whether the shuffle order should be different for each epoch. In TF 1.X, the idiomatic way to create epochs was through the repeat transformation:

其中加粗的文字解释了buffer_size的作用并用了一个例子来解释,翻译过来大概意思是:

buffer_size 规定了乱序缓冲区的大小,且要求缓冲区大小大于或等于数据集的完整大小;
帮助手册中的例子如下:
假设数据集的大小为10000,buffer_size的大小为1000,最开始算法会把前1000个数据放入缓冲区;当从缓冲区的这1000个元素中随机选出第一个元素后,这个元素的位置会被数据集的第1001个元素替换;然后再从这1000个元素中随机选取第二个元素,第二个元素的位置又会被数据集中的第1002个数据替换,以此类推…

此外,buffer_size不宜过大,过大会导致内存爆炸;读完官方的帮助文档,才从本质上明白了 buffer_size参数的含义和shuffle方法背后实现的原理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值