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下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
Python全排列操作实例分析
Jul 24 Python
python flask框架实现传数据到js的方法分析
Jun 11 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
Django 大文件下载实现过程解析
Aug 01 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Python如何使用ElementTree解析xml
Oct 12 Python
Python 文本滚动播放器的实现代码
Apr 25 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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 url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
Python中random模块生成随机数详解
2016/03/10 Python
python简易远程控制单线程版
2018/06/20 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
Python的argparse库使用详解
2018/10/09 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
SQL数据库笔试题
2016/03/08 面试题
快餐店的创业计划书范文
2014/01/29 职场文书
党员党性分析材料
2014/02/17 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
电工实训报告总结
2014/11/05 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
Python数据结构之队列详解
2022/03/21 Python
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers