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深入学习之闭包
Aug 31 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
Python 关于反射和类的特殊成员方法
Sep 14 Python
python2.7实现FTP文件下载功能
Apr 15 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
如何使用Python实现自动化水军评论
Jun 26 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
python 调用Google翻译接口的方法
Dec 09 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
php $_SERVER当前完整url的写法
2009/11/12 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
详解PHP中的PDO类
2015/07/06 PHP
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
Python爬虫代理IP池实现方法
2017/01/05 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
python如何读写csv数据
2018/03/21 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
工作自我评价分享
2013/12/01 职场文书
毕业设计说明书
2014/05/07 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
八年级作文之友情
2019/11/25 职场文书