为了账号安全,请及时绑定邮箱和手机立即绑定

TensorFlow中结构化数据工具Protocol Buffer

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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消