[转]『TensorFlow』读书笔记_TFRecord学习
转自:https://www.cnblogs.com/hellcat/p/8146748.html#_label0_3
目录
- 程序介绍
- 包导入
- TFRecord录入格式转换
- TFRecord文件写入测试
- TFRecord文件读取测试
- TFRecord文件批量生成
- TFRecord文件读取测试
- batch和batch_join的说明
- 文件准备
- 单个Reader,单个样本
- 单个Reader,多个样本
- 多Reader,多个样本
回到顶部
程序介绍
包导入
1 2 3 4 5 6 7 8 9 10 11 12 |
|
TFRecord录入格式转换
TFRecord的录入格式是确定的,整数或者二进制,在train函数中能查看所有可以接受类型
1 2 3 4 5 6 7 8 |
|
TFRecord文件写入测试
将mnist数据以每张图片为单位写入同一个TFR文件,
实际上就是每次把一个图片相关信息都写入,注意文件类型,二级制数据需要以string的格式保存
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 |
|
调用,
1 2 |
|
输出如下,
TFRecord文件读取测试
实际的读取基本单位和存入的基本单位是一一对应的,当然也可以复数读取,但是由于tf后续有batch拼接的函数,所以意义不大
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 |
|
输出,
拼接batch尺寸为2,每次读取10个数据
可以看到,这里batch尺寸指定的实际上是读取次数
(2, 10, 784)
[[7 3 4 6 1 8 1 0 9 8]
[0 3 1 2 7 0 2 9 6 0]][[784 784 784 784 784 784 784 784 784 784]
[784 784 784 784 784 784 784 784 784 784]]
……
注意读取数目和解析数目选择的函数是要对应的,
1 2 3 4 5 6 7 8 9 10 11 12 |
|
值得注意的是这句,
1 |
|
虽然后续未必会调用(coord实际上还是会调用用于协调停止),但实际上控制着队列的数据读取部分的启动,注释掉后会导致队列有出无进进而挂起。
TFRecord文件批量生成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
输出如下,
TFRecord文件读取测试
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 |
|
注意下面介绍,
1 2 3 |
|
batch生成的两个函数如下,
1 2 3 4 5 6 7 8 9 10 11 |
|
- 单一文件多线程,那么选用tf.train.batch(需要打乱样本,有对应的tf.train.shuffle_batch)
- 多线程多文件的情况,一般选用tf.train.batch_join来获取样本(打乱样本同样也有对应的tf.train.shuffle_batch_join使用)
回到顶部
batch和batch_join的说明
文件准备
1 2 3 4 5 6 7 |
|
单个Reader,单个样本
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 |
|
单个Reader,多个样本
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 |
|
多Reader,多个样本
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 |
|
tf.train.batch
与tf.train.shuffle_batch'
数是单个Reader读取,但是可以多线程。tf.train.batch_join'
和tf.train.shuffle_batch_join
可设置多Reader读取,每个Reader使用一个线程。至于两种方法的效率,单Reader时,2个线程就达到了速度的极限。多Reader时,2个Reader就达到了极限。所以并不是线程越多越快,甚至更多的线程反而会使效率下降。
在这个例子中, 虽然只使用了一个文件名队列, 但是TensorFlow依然能保证多个文件阅读器从同一次迭代(epoch)的不同文件中读取数据,知道这次迭代的所有文件都被开始读取为止。(通常来说一个线程来对文件名队列进行填充的效率是足够的)
另一种替代方案是: 使用tf.train.shuffle_batch
函数,设置num_threads
的值大于1。 这种方案可以保证同一时刻只在一个文件中进行读取操作(但是读取速度依然优于单线程),而不是之前的同时读取多个文件。这种方案的优点是:
- 避免了两个不同的线程从同一个文件中读取同一个样本。
- 避免了过多的磁盘搜索操作。
简单来说,
单一文件多线程,那么选用tf.train.batch(需要打乱样本,有对应的tf.train.shuffle_batch)
多线程多文件的情况,一般选用tf.train.batch_join来获取样本(打乱样本同样也有tf.train.shuffle_batch_join)
[转]『TensorFlow』读书笔记_TFRecord学习相关推荐
- 『TensorFlow』SSD源码学习_其二:基于VGG的SSD网络前向架构
Fork版本项目地址:SSD 参考自集智专栏 一.SSD基础 在分类器基础之上想要识别物体,实质就是 用分类器扫描整张图像,定位特征位置 .这里的关键就是用什么算法扫描,比如可以将图片分成若干网格,用 ...
- 『算法』读书笔记 1.4算法分析 Part1
Chapter 1 本章结构 1.1Java语法 1.2数据抽象 1.3集合类抽象数据类型:背包 (Bags) .队列 (Queues) .栈 (Stacks) 1.4算法分析 1.5连通性问题-Ca ...
- python 动漫卡通人物图片大全,『TensorFlow』DCGAN生成动漫人物头像_下
一.计算图效果以及实际代码实现 计算图效果 实际模型实现 相关介绍移步我的github项目. 二.生成器与判别器设计 生成器 相关参量, 噪声向量z维度:100 标签向量y维度:10(如果有的话) 生 ...
- 『重构--改善既有代码的设计』读书笔记----序
作为C++的程序员,我从大学就开始不间断的看书,看到如今上班,也始终坚持每天多多少少阅读技术文章,书看的很多,但很难有一本书,能让我去反复的翻阅.但唯独『重构--改善既有代码的设计』这本书让我重复看了 ...
- 『TensorFlow』模型保存和载入方法汇总
一.TensorFlow常规模型加载方法 保存模型 tf.train.Saver()类,.save(sess, ckpt文件目录)方法 参数名称 功能说明 默认值 var_list Saver中存储变 ...
- 『TensorFlow』模型载入方法汇总
『TensorFlow』第七弹_保存&载入会话_霸王回马 一.TensorFlow常规模型加载方法 保存模型 tf.train.Saver()类,.save(sess, ckpt文件目录)方法 ...
- 『TensorFlow』命令行参数解析
argparse很强大,但是我们未必需要使用这么繁杂的东西,TensorFlow自己封装了一个简化版本的解析方式,实际上是对argparse的封装 脚本化调用tensorflow的标准范式: impo ...
- 『TensorFlow』函数查询列表_张量属性调整
博客园 首页 新随笔 新文章 联系 订阅 管理 『TensorFlow』函数查询列表_张量属性调整 数据类型转换Casting 操作 描述 tf.string_to_number (string_te ...
- 『TensorFlow』专题汇总
TensorFlow函数查询 『TensorFlow』0.x_&_1.x版本框架改动汇总 『TensorFlow』函数查询列表_数值计算 『TensorFlow』函数查询列表_张量属性调整 『 ...
最新文章
- ES6 -Set 和 Map 数据结构
- python 生成html表的报告_pytest文档7-pytest-html生成html报告
- echat 图表动态数据生成,渲染,自定义Y轴坐标值
- Jerry在2020 SAP全球技术大会的分享:SAP Spartacus技术介绍的文字版
- 一个实际的sonar代码检查的配置文件
- 【渝粤教育】国家开放大学2019年春季 289法理学 参考试题
- Xshell 无法连接虚拟机中的ubuntu的问题
- c++ sleep函数_《PHP扩展开发》-hook-(hook原来的sleep)
- 集群系统服务器,Web集群服务器及管理系统
- (42)Verilog HDL 打两拍设计
- JavaEE 13个核心技术规范
- 挣多少钱让你觉得生存无忧,有底气做感兴趣的事?
- Ubuntu下备份系统的方法
- logistic回归分析优点_二元Logistic回归
- 电路串联和并联图解_串联和并联的电路图怎么画
- 20211003:数字滤波器前置知识,sinc函数与Sa函数
- HTML5吃豆豆游戏开发实战(三)2d碰撞检测、重构
- 世界疫情实时动态 + pyecharts可视化
- Knativa 基于流量的灰度发布和自动弹性实践
- vue路由嵌套无法渲染 页面空白
热门文章
- python 给文本加下划线_untiy3dUGUI实现text文本下划线
- mysql5.5 vsftpd_vsftpd-2.0.5+mysql-5.5+pam_mysql构建虚拟用户访问
- php 图片保存到本地文件,php 远程图片保存到本地的函数类
- java功能模块_Java 13功能
- 无法使用struts2注释_带有注释且没有struts.xml文件的Struts 2 Hello World示例
- 熊猫DataFrame from_dict()–字典到DataFrame
- sql exists_SQL Exists运算符–终极指南
- sql面试题问答题_SQL面试问答
- 转:C++中STL用法总结
- 找工作?最容易遇到的Java面试题