继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

TensorFlow中结构化数据工具Protocol Buffer

四季花海
关注TA
已关注
手记 299
粉丝 42
获赞 161

Protocol Buffer是Google开发的处理结构化数据的工具.


什么是结构化数据?

假设要记录一些用户信息,每个用户的信息中都包括用户的名字,ID和email地址,那么每个用户的信息可以表示成一下的形式:

name:张三id:12345email:zhangsan@abc.com

这就是一个结构化的数据。是指拥有多种属性的数据,比如上述拥有三个不同的属性。

当要将这些结构化的用户信息持久化或者进行网络传输时,就需要先将它们序列化;所谓序列化就是将结构化的数据变成数据流的形式,简单来说就是变成字符串。如何将结构化的数据序列化,并从结构化之后的数据流中还原出原来的结构化数据,统称为处理结构化数据,这就是Protocol Buffer解决的主要问题。

Protocol Buffer格式的数据与XML和json格式的数据有着比较大的差别。首先,Protocol Buffer序列化之后得到的数据不是可读的字符串,而是二进制流;其次,XML或者json格式数据信息都包含在了序列化之后的数据中,不需要任何其他信息就能还原数据;但使用Protocol Buffer时需要先定义数据的格式(schema),还原一个序列化之后的数据将需要使用这个定义好的数据格式。

以下是数据格式定义文件:

message user {
optional string name = 1;
required int32 id = 2;
repeated string email = 3;
}

因为这样的差别,Protocol Buffer序列化出来的数据要比XML格式的数据小3到10倍,解析时间要快20到100倍。

Protocol Buffer定义数据格式的文件一般保存在.proto中。每一个message代表了一类结构化数据,比如这里的用户信息,message里面定义了每一个属性的类型和名字,属性的类型可以布尔型,整数型,实数型,字符型这样的基本类型。也可以是另一个message,Protocol Buffer也定义了一个属性是必须的(required),还是可选的(optional),或者是可重复的(repeated),在最新的Protocol Buffer3中已经不再支持required类型。

Protocol Buffer是TensorFlow系统中使用到的重要工具,TensorFlow中的数据基本上都是通过Protocol Buffer来组织的,分布式TensorFlow的通信协议gRPC也是以这个作为基础的。



作者:富城
链接:https://www.jianshu.com/p/bc4c24e8bfea


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP