TFRecord

这篇文章基于一个生成tfrecord和解析tfrecord的代码,对TFRecord进行了详细的解析。

一. 什么是TFRecord?

Tensorflow的文档中说:

“… approach is to convert whatever data you have into a supported format. This approach makes it easier to mix and match data sets and network architectures. The recommended format for TensorFlow is a TFRecords file containing tf.train.Example protocol buffers (which contain Features as a field).”

Tensorflow的TFRecord文件格式,是一种二进制存储格式。

如果您正在处理大型数据集,则使用二进制文件格式存储数据在磁盘上占用的空间更少,复制时间更短,并且可以从磁盘更有效地读取。

特别是对于太大而无法完全存储在存储器中的数据集,TFRecord可以进行例如批处理,只有当时所需的数据从磁盘加载然后被处理。

TFRecords的另一个主要优点是可以存储序列数据 - 例如,时间序列或字编码。

二. 构建TFRecords

TFRecord文件将您的数据存储为二进制字符串序列。 这意味着您需要在将数据写入文件之前指定数据的结构。Tensorflow为此提供了两个组件:tf.train.Example和tf.train.SequenceExample。 您必须将每个数据样本存储在其中一个结构中,然后对其进行序列化并使用tf.python_io.TFRecordWriter将其写入磁盘。

注意:tf.train.Example 不是一个普通的python的类,而是一个protocol buffer

三. 生成TFRecords

以Movie recommendations为例

生成TFRecord文件可以分成以下几步:

Use tf.python_io.TFRecordWriter to open the tfrecord file and start writing.

Before writing into tfrecord file, the image data and label data should be converted into proper datatype. (byte, int, float)

Now the datatypes are converted into tf.train.Feature

Finally create an Example Protocol Buffer using tf.Example and use the converted features into it. Serialize the Example using serialize() function.

Write the serialized Example.

Let’s use the movie recommendation application from the Tensorflow documentation as an example:

tf.train.BytesList,tf.train.FloatList和tf.train.Int64List是tf.train.Feature的核心。 这三个都有一个属性值,它需要一个 bytes, float, and int列表。movie_name_list = tf.train.BytesList(value=[b'The Shawshank Redemption', b'Fight Club'])

movie_rating_list = tf.train.FloatList(value=[9.0, 9.7])

tf.train.Feature包含特定类型的数据列表。它有一个属性,bytes_list / float_list / int64_list。movie_names = tf.train.Feature(bytes_list=movie_name_list)

movie_ratings = tf.train.Feature(float_list=movie_rating_list)

tf.train.Features是a collection of named features。 它需要一个字典,其中键是功能的名称,值是tf.train.Feature。movie_dict = {

'Movie Names': movie_names,

'Movie Ratings': movie_ratings

}

movies = tf.train.Features(feature=movie_dict)

tf.train.Exampleexample = tf.train.Example(features=movies)

tf.python_io.TFRecordWriter是一个Python类。 它在其path属性中接受文件路径,并创建一个与任何其他文件对象一样工作的writer对象。 TFRecordWriter类提供write,flush和close方法。 write方法接受一个字符串作为参数并将其写入磁盘,这意味着必须首先序列化结构化数据。 为此,tf.train.Example和tf.train.SequenceExample提供了SerializeToString方法。with tf.python_io.TFRecordWriter('movie_ratings.tfrecord') as writer:

writer.write(example.SerializeToString())

四. 解析TFRecords

阅读TFRecords的过程:

使用tf.TFRecordReader读取TFRecord。

使用tf.FixedLenFeature和tf.VarLenFeature定义TFRecord中所需的功能,具体取决于在tf.train.Example定义期间定义的内容。

使用tf.parse_single_example一次解析一个tf.train.Example(一个文件)。

可以参考:

本文的参考如下:

1. https://blog.csdn.net/happyhorizion/article/details/77894055 特别详细的中文介绍 tensorflow读取数据-tfrecord格式

2. https://www.skcript.com/svr/why-every-tensorflow-developer-should-know-about-tfrecord/

- 英文整体介绍了什么是tfrecord,tfrecord的优点,还有生成tfrecord和解析tfrecord的大体过程

- 生成TFRecord: Data --> FeatureSet --> Example --> Serialized Example --> tfrecord

- 解析TFRecord: tfrecord -->  Serialized Example --> Example --> FeatureSet -->  Data

3. https://medium.com/mostly-ai/tensorflow-records-what-they-are-and-how-to-use-them-c46bc4bbb564

- 英文非常非常非常详细介绍了如何一步一步生成TFRecord和解析TFRecord,并且告诉了每一个函数的意思

- 真的非常非常好,耐心看

4. http://www.machinelearninguru.com/deep_learning/tensorflow/basics/tfrecord/tfrecord.html

- 英文How to write into and read from a TFRecords file in TensorFlow

- 利用一个例子详细讲解,也非常非常好

5. 当然,github上搜索tfrecord也可以看到很多优秀的关于TFRecords的代码

python如何读取tfrecord文件_TFRecord读取数据相关推荐

  1. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  2. 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  3. Python读取excel文件中的数据,绘制折线图、散点图

    https://www.cnblogs.com/liulinghua90/p/9935642.html https://blog.csdn.net/qq_32458499/article/detail ...

  4. Python——读取txt文件每一行数据

    Python--读取txt文件每一行数据生成列表 一.例子1 (间隔符:逗号) 1.1 文件 1.2 代码 1.3 结果 二.例子2 (间隔符:空格) 2.1 文件 2.2 代码 2.3 结果 参考文 ...

  5. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  6. python 读取大文件_Python读取大文件

    1. 前言 前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的for line in open(filepath).readlines()处理,但停顿好久也没变化,可见占用不小的内存.在网上 ...

  7. C++读取OBJ文件 对于f数据 取出任意自己想要的数据

    C++读取OBJ文件 对于f数据 取出任意自己想要的数据 自己建了一个1.txt 文件内容如下 f 77959/79546/77959 37781/38039/37783 37770/38028/37 ...

  8. 将数据写入json文件,并且读取json文件中的数据

    目录 一.将数据生成json文件 二.读取json文件中的数据 三.方法测试 四.其他附件 1.User实体类 2.import 一.将数据生成json文件 方法 /*** 生成.json格式文件*/ ...

  9. python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

最新文章

  1. redhat6.5 yum源
  2. mysql分页的优势_数据库经典分页几种实例及各优缺点
  3. lambda 使用_如何使用Lambda和API网关构建API
  4. Of Study - Francis Bacon
  5. antimalware service executable占用内存过高_SQLServer占用服务器内存过高,更改这个设置就能降低内存使用率
  6. Flex控制对主机网页中脚本的访问
  7. 问道手游服务器修改密码,问道手游去哪改密码 问道手游怎么更换修改密码手机号...
  8. luogu P4234 最小差值生成树
  9. pcre2 知:介绍
  10. java单例模式(下)
  11. package.json文件是个什么东东?
  12. java语言中 逻辑常量_在 Java语言中 ,逻辑常量只有哪两个值 (true,false)_语文答案_学小易找答案...
  13. Java小白修炼手册--第五阶段--SpringBoot框架( day01)
  14. Windows10通过局域网共享文件的方法
  15. 香港计算机硕士面试,香港计算机相关专业面试如何准备?
  16. 个人电脑数据的安全防护之------硬盘的日常保养
  17. 你真的了解时间复杂度吗?
  18. 牛刀小试(四)——较完善的购物系统
  19. 【论文阅读 - AAAI 2020】Order Matters:Semantic-Aware Neural Networks for Binary Code Similarity Detection
  20. 贝尔商道赚钱思维36道第24道:发家致富三原则

热门文章

  1. WY37 - 操作序列 - 网易
  2. 12款精品上瘾iOS游戏
  3. idea中web项目配置tomcat启动不了
  4. microsoft project 添加空行 空白行 空白任务
  5. 实例:python爬取某地历史天气预报
  6. 无线投屏、一键接入,阿里高效率办公软件“阿里郎”即将上云对外服务
  7. 【博学谷学习记录】超强总结,用心分享|前端开发图片属性总结
  8. 转载:罗永浩直播带货:人生路上,彪悍的复原力到底多重要?
  9. 微信公众平台开发(七) 聊天机器人功能开发
  10. 前端路由(v-router)