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黑魔法之编码转换
Jan 25 Python
python套接字流重定向实例汇总
Mar 03 Python
python一键升级所有pip package的方法
Jan 16 Python
python基础教程之匿名函数lambda
Jan 17 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
python对象与json相互转换的方法
May 07 Python
Python实现图像的垂直投影示例
Jan 17 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
Python的in,is和id函数代码实例
Apr 18 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
只用20行Python代码实现屏幕录制功能
Jun 02 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
React组件refs的使用详解
2018/02/09 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python之str操作方法(详解)
2017/06/19 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
可贵的沉默教学反思
2014/02/06 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
工人先锋号申报材料
2014/12/29 职场文书
护士节慰问信
2015/02/15 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
四风之害观后感
2015/06/09 职场文书
新郎新娘致辞
2015/07/31 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书