ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

tensorflow 之 Protocol Buffer

2021-09-17 10:01:58  阅读:156  来源: 互联网

标签:结构化 Protocol Buffer 格式 tensorflow 序列化 数据


1. Protocol Buffer

常用的结构化数据处理工具有:XML、JSON、Protocol Buffer。其中Protocol Buffer是谷歌开发的处理结构化数据的工具。

  • 这里结构化的数据,指的是拥有多种属性的数据。如 要记录一些用户的信息,包括用户的名字、ID、E-mail地址,那么这就是一个结构化的数据。
  • 要将这些结构化的用户信息持久化或者进行网络传输时,就需要先将它们序列化。所谓序列化,是将结构化的数据变成数据流的格式,也就是变成一个字符串。
  • 将结构化的数据序列化,并从序列化之后的数据流中还原出原来的结构化数据,统称为处理结构化数据,这就是Protocol Buffer解决的主要问题。

2. Protocol Buffer的格式

XML的格式为:

<user>
<name>张三</name>
<id>12345</id>
<email>zhangsan@abc.com</email>
</user>

JSON的格式为:

{
"name": "张三",
"id": "12345",
"email": "zhangsan@abc.com",
}
 

Protocol Buffer格式的数据和XML、JSON格式的数据有较大的区别。

  • Protocol Buffer序列化之后得到的数据是二进制流,不是可读的字符串
  • XML、JSON格式的信息都包含在了序列化之后的数据中,不需要任何其他信息就能够还原序列化之后的数据。但使用Protocol Buffer时需要先定义数据的格式。还原一个序列化之后的数据,需要使用到这个定义好的数据格式。由于这样的差别,Protocol Buffer序列化出来的数据要比XML格式的数据小3~10倍,解析时间快20~100倍。
    以下代码给出了上述用户信息样例的数据格式定义文件:
    message user{
    optional string name=1;
    required int32 id=2;
    repeated string email=3;
    }

Protocal Buffer 定义数据格式的文件一般保存在 .ptoto 文件中。每个message代表了一类结构化的数据,比如这里的用户信息。message里面定义了每一个属性的类型和名字。

  • Protocol Buffer里属性的类型可以是像布尔型、整数型、实数型、字符型这样的基本类型,也可以是另外一个message。这样大大增加了Protocol Buffer的灵活性。
  • 在message中,Protocol Buffer也定义了一个属性是必需的(required)还是可选的(optional),或者是可重复的(repeated)。
    |必需的(required):message的所有实例都需要有这个属性;
    |可选的(optional):这个属性的取值可以为空;
    |可重复的(repeated),那么这个属性的取值可以是一个列表。

    以用户信息为例,所有用户都需要有ID,所以ID这个属性是必需的;不是所有用户都填写了姓名,所以姓名这个属性是可选的;一个用户可能有多个E-mail地址,所以E-mail地址是可重复的。 

Protocol Buffer 是tensorflow系统中使用到的重要工具,tensorflow中的数据基本都是通过 Protocol Buffer来组织的 

标签:结构化,Protocol,Buffer,格式,tensorflow,序列化,数据
来源: https://blog.csdn.net/magic_ll/article/details/120330427

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有