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读写文件方法总结
Jun 09 Python
python实现文件快照加密保护的方法
Jun 30 Python
Python实现字符串逆序输出功能示例
Jun 24 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
python机器学习之神经网络(二)
Dec 20 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
Python 字符串换行的多种方式
Sep 06 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
python实现粒子群算法
Oct 15 Python
python 基于DDT实现数据驱动测试
Feb 18 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日历程序
2006/12/06 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
理解Python中的With语句
2016/03/18 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
一份比较全的PHP面试题
2016/07/29 面试题
元旦晚会邀请函
2014/02/01 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
刘公岛导游词
2015/02/05 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python