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中实现指定时间调用函数示例代码
Sep 08 Python
python爬取淘宝商品销量信息
Nov 16 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
python学生管理系统开发
Jan 30 Python
利用Django模版生成树状结构实例代码
May 19 Python
Django中多种重定向方法使用详解
Jul 17 Python
python集合的创建、添加及删除操作示例
Oct 08 Python
基于python实现数组格式参数加密计算
Apr 21 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 Python
python实现网络五子棋
Apr 11 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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在Web开发领域的优势
2006/10/09 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
python代码过长的换行方法
2018/07/19 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
如何给Python代码进行加密
2020/01/10 Python
详解python metaclass(元类)
2020/08/13 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
python字典按照value排序方法
2020/12/28 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
试用期员工考核制度
2014/01/22 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
大班开学家长寄语
2014/04/04 职场文书
导师评语大全
2014/04/26 职场文书
党建工作先进材料
2014/05/02 职场文书
转让协议书范本
2014/09/13 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
《假如》教学反思
2016/02/17 职场文书
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis