TensorFlow dataset.shuffle、batch、repeat的使用详解


Posted in Python onJanuary 21, 2020

直接看代码例子,有详细注释!!

import tensorflow as tf
import numpy as np


d = np.arange(0,60).reshape([6, 10])

# 将array转化为tensor
data = tf.data.Dataset.from_tensor_slices(d)

# 从data数据集中按顺序抽取buffer_size个样本放在buffer中,然后打乱buffer中的样本
# buffer中样本个数不足buffer_size,继续从data数据集中安顺序填充至buffer_size,
# 此时会再次打乱
data = data.shuffle(buffer_size=3)

# 每次从buffer中抽取4个样本
data = data.batch(4)

# 将data数据集重复,其实就是2个epoch数据集
data = data.repeat(2)

# 构造获取数据的迭代器
iters = data.make_one_shot_iterator()

# 每次从迭代器中获取一批数据
batch = iters.get_next()

sess = tf.Session()

sess.run(batch)
# 数据集完成遍历完之后,继续抽取的话会报错:OutOfRangeError
In [21]: d
Out[21]: 
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
  [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
  [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
  [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
  [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
  [50, 51, 52, 53, 54, 55, 56, 57, 58, 59]])
In [22]: sess.run(batch)
Out[22]: 
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
  [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
  [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
  [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]])

In [23]: sess.run(batch)
Out[23]: 
array([[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
  [50, 51, 52, 53, 54, 55, 56, 57, 58, 59]])

从输出结果可以看出:

shuffle是按顺序将数据放入buffer里面的;

当repeat函数在shuffle之后的话,是将一个epoch的数据集抽取完毕,再进行下一个epoch的。

那么,当repeat函数在shuffle之前会怎么样呢?如下:

data = data.repeat(2)

data = data.shuffle(buffer_size=3)

data = data.batch(4)
In [25]: sess.run(batch)
Out[25]: 
array([[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
  [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
  [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
  [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]])

In [26]: sess.run(batch)
Out[26]: 
array([[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
  [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
  [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
  [30, 31, 32, 33, 34, 35, 36, 37, 38, 39]])

In [27]: sess.run(batch)
Out[27]: 
array([[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
  [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
  [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
  [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]])

可以看出,其实它就是先将数据集复制一遍,然后把两个epoch当成同一个新的数据集,一直shuffle和batch下去。

以上这篇TensorFlow dataset.shuffle、batch、repeat的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python中的cookielib模拟登录网站
Apr 09 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
Python的re模块正则表达式操作
May 25 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
用Python实现数据的透视表的方法
Nov 16 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
python用for循环求和的方法总结
Jul 08 Python
python+logging+yaml实现日志分割
Jul 22 Python
Python3常见函数range()用法详解
Dec 30 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 #Python
python爬取本站电子书信息并入库的实现代码
Jan 20 #Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 #Python
关于tf.nn.dynamic_rnn返回值详解
Jan 20 #Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 #Python
关于tf.reverse_sequence()简述
Jan 20 #Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 #Python
You might like
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
JS 文件大小判断的实现代码
2010/04/07 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
JS实现简单日历特效
2020/01/03 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
自考毕业自我鉴定范文
2013/10/27 职场文书
女子职高个人自荐书
2014/02/01 职场文书
摄影助理岗位职责
2014/02/07 职场文书
团队激励口号
2014/06/06 职场文书
效能风暴心得体会
2014/09/04 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
父亲节感言
2015/08/03 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
SpringRetry重试框架的具体使用
2021/07/25 Java/Android
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL