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实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
Python实现的排列组合计算操作示例
Oct 13 Python
python读写LMDB文件的方法
Jul 02 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
python 检查文件mime类型的方法
Dec 08 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
django教程如何自学
Jul 31 Python
去除python中的字符串空格的简单方法
Dec 22 Python
python中spy++的使用超详细教程
Jan 29 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
初级的用php写的采集程序
2007/03/16 PHP
PHP 变量类型的强制转换
2009/10/23 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
PHP输出时间差函数代码
2013/01/28 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
初识laravel5
2015/03/02 PHP
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
python去除所有html标签的方法
2015/05/05 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
英国门把手公司:Door Handle Company
2019/05/12 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
中专生自我鉴定范文
2013/12/19 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
利用Python多线程实现图片下载器
2022/03/25 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS