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装饰器使用方法实例
Nov 21 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Django 用户认证组件使用详解
Jul 23 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
python如何将多个PDF进行合并
Aug 13 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
python属于解释语言吗
Jun 11 Python
如何使用 Flask 做一个评论系统
Nov 27 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
PHP4与PHP5的时间格式问题
2008/02/17 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
python enumerate函数的使用方法总结
2017/11/15 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
Python input函数使用实例解析
2019/11/22 Python
python中判断文件结束符的具体方法
2020/08/04 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
《小草和大树》教学反思
2014/02/16 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
台风停课通知
2015/04/24 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
图解上海144收音机
2021/04/22 无线电
JavaScript的Set数据结构详解
2022/02/18 Javascript