tensorflow之并行读入数据详解


Posted in Python onFebruary 05, 2020

最近研究了一下并行读入数据的方式,现在将自己的理解整理如下,理解比较浅,仅供参考。

并行读入数据主要分

1. 创建文件名列表

2. 创建文件名队列

3. 创建Reader和Decoder

4. 创建样例列表

5. 创建批列表(读取时可要可不要,一般情况下样例列表可以执行读取数据操作,但是在实际训练的时候往往需要批列表来分批进行数据的组织,提取)

其具体流程如下:

tensorflow之并行读入数据详解

一、 文件名列表:

文件名列表是一个list类型的数据,里面的内容是需要用的数据文件名。可以使用常规的python语法入:[file1, file2]。也可以使用tf.train.match_filename_once方法通过匹配输入。

二、文件名队列

一般使用tf.train.string_input_producer的方法创建文件名队列。该方法传入的是一个文件名列表,输出的是一个先进先出队列。在该方法中存在两个重要参数,num_epochs和shuffle。num_epochs表示列表遍历的次数,主要是由于有时候训练模型需要反复的遍历数据集便于更新模型参数,默认情况下是None(循环遍历)。shuffle表示是否随机遍历,默认情况下是true,表示数据会随机输入队列,当想顺序读入数据时shuffle设置为false。至于其他的capacity表示列表的容量,shared_name表示共享时的名字。

三、Reader和Decoder

Reader的功能是读取数据记录,Decoder的功能是将数据的记录转化为张量格式。在使用时需要先创建输入数据文件对应的Reader,然后从文件名队列中取出文件名,在调用Reader.read的方法返回一个类似于(输入文件名,数据记录)的元组。最后使用Decoder方法将每一列数据都转化为张量的形式。

tensorflow之并行读入数据详解

四、批队列

批队列可以在构建图之前事先构建好,样例队列需要在图中直接产生不用直接预定义。所以先介绍批队列的构建方式。批队列主要是样例打包聚集成批数据,能供模型训练使用。一般是使用tf.train.shuffle_batch和tf.train.batch的方法构建。可以控制批的大小(一次性读入的 数据大小),线程个数,然后在图中直接调用。

tensorflow之并行读入数据详解

五、样例队列

样例队列的创建方式是隐式的,一般在图中为了计算任务顺利的输入数据,我们一般使用tf.train.start_queue_runners方法启动所有的入队操作所需的线程,此时会自动执行所有的文件名入队操作和文件名队列的操作,执行样例队列入队和样例队列的操作。这些都是在后台产生的。

六、线程协调器

并行读取数据离不开多线程操作,多线程操作离不开线程调节器。tensorflow使用tf.train.Coordinatior方法创建管理多线程生命周期的调节器。调节器的工作原理比较简单,它监控Tensoflow后台的所有线程,当某一个线程出现异常时,它的should_stop方法返回true,最后调用request_stop终止所有的线程。但是要注意我们在使用线程调节器之前一定要调用tf.local_variables_initializer方法进行初始化。

七、读入数据类型

tensorflow读入的数据类型可以使csv,TFRecord和自由格式文件。CSV的读取直接调用tf.TextLineReader构建Reader,再调用tf.decoder_csv的方法对文件进行解码变为张量。

TFRecoder是tensorflow标准的输入格式,它是通过protocolBuffer构建的存储数据记录的结构。该数据结构分明,一个样例中包含一组特征Features,一个Features又包含多个特征向量feature。其在读取的时候主要使用tf.TFRecoderReader的方法构建Reader,在使用read的方法读出元组。接着对元组中的value采用tf.parse_single_example()方法进行解析。再解析的时候需要传入features参数,该参数要和构造该文件时输入的字典型变量保持一致(key,value)。key和输入的key一致,value是一个表示该key对应的维度和类型的定西,用tf.FixedLenFeature函数构造,该函数传入参数表示特征形状和特征值的类型。具体如下:

tensorflow之并行读入数据详解

自由格式是指用户自定义的二进制文件,他存储的对象是字符串,每条记录都是一个固定长度的字节块。再读入的时候首先要使用tf.FixedLengthRecoderReader的方法读取对应的二进制文件,然后使用tf.decode_raw的方法将字符串转化为uint8类型的张量。

八、整体代码

具体的相关码如下:

tensorflow之并行读入数据详解

tensorflow之并行读入数据详解

以上这篇tensorflow之并行读入数据详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之基本内置数据类型介绍
Feb 20 Python
从零学python系列之教你如何根据图片生成字符画
May 23 Python
python中threading超线程用法实例分析
May 16 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
Django 使用logging打印日志的实例
Apr 28 Python
对numpy中向量式三目运算符详解
Oct 31 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
python如何调用字典的key
May 25 Python
Python logging日志库空间不足问题解决
Sep 14 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 #Python
tensorflow 自定义损失函数示例代码
Feb 05 #Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 #Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 #Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 #Python
解决Tensorflow 内存泄露问题
Feb 05 #Python
TensorFlow实现指数衰减学习率的方法
Feb 05 #Python
You might like
adodb与adodb_lite之比较
2006/12/31 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
php中stream(流)的用法
2014/03/25 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
如何卸载python插件
2020/07/08 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
ktv中秋节活动方案
2014/01/30 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
小学课外活动总结
2014/07/09 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
感恩节寄语2015
2015/03/24 职场文书
整改通知书
2015/04/20 职场文书
暂停营业通知
2015/04/25 职场文书