一、TensorFlow主要依赖包——Protocol Buffer & Bazel

  1. Protocol Buffer

  首先要弄清三个概念:

  • 结构化数据:指拥有多种属性的数据,例如用户信息可以表示为

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

  这样的用户信息就是一个结构化数据,name、id和email都是这个数据的属性。

  • 序列化:结构化的数据持久化或进行网络传输时,需要先进行序列化。序列化就是将结构化的数据变成数据流的格式,即变成字符串。
  • 结构化数据的处理:将结构化数据序列化,并从序列化之后的数据流中还原出原来的结构化数据。

  Protocol Buffer就是用来处理结构化数据的。

  另外两种经常被用来处理结构化数据的工具时XML和JSON,它们和Protocol Buffer的主要区别如下

  XML、JSON Protocol Buffer
序列化结果 可读字符串 二进制流
还原操作 序列化结果包含格式信息,无需其他信息即可还原 需事先定义数据格式,还原时也需使用这个定义好的格式。

  由于Protocol Buffer在序列化时可根据需要选定数据类型,它序列化出来的数据一般比XML格式小,解析时间也要快许多。

  Protocol Buffer定义数据格式的文件一般保存在.proto文件中,如

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

  其中,每一个message代表了一类结构化的数据,它的里面定义了每一个属性的类型和名字。

  属性的类型可以是:

  • 布尔型
  • 整型
  • 实数型
  • 字符型等基本类型
  • 另一个message

  属性的设置:

  • repeated 属性是可以重复的,即属性的取值可以是一个列表
  • optional 属性是可选的,即属性的取值可以为空

  2. Bazel

  一个自动化构建工具,用于对项目空间(workspace)中的程序进行编译。

  workspace可以理解为一个文件夹,它包含了编译一个软件所需要的源代码以及输出编译结果的软连接(symbolic link),其根目录的基本结构如下:

  • WORKSPACE文件,定义了对外部资源的依赖关系。可以是空文件。
  • BUILD文件,Bazel通过它来寻找需要编译的目标。它采用一种类似Python的语法来指定每一个编译目标的输入、输出和编译方式,也就是说,和一般的开放式编译工具不同,Bazel的编译方式是事先定义好的。
  • 程序源码的py文件(以Python为例)。

  Bazel对Python支持的编译方式只有以下三种:

  • py_binary 将Python程序编译为可执行文件
  • py_library 将Python程序编译为库函数供其他py_binary或py_test调用
  • py_test 编译Python测试程序

  举例见书p28-29。

【TensorFlow使用教程】1 环境搭建的更多相关文章

  1. MyBatis实例教程--开发环境搭建

    MyBatis实例教程--开发环境搭建 准备工作: 1.mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包 ...

  2. 史上最全最详细的环境搭建教程,行百里者手把手教你在windows下搭建Anaconda+pycharm+库文件(TensorFlow,numpy)环境搭建

    我是在搭建TensorFlow开发环境的道路上走了很多弯路 掉了很多头发,为了让广大同学们不在受苦受累 下面我将手把手教你学习如特快速搭建python环境 快速导入numpy,PIL,pillow,等 ...

  3. 使用Tensorflow object detection API——环境搭建与测试

    [软件环境搭建] 操作系统:windows 10 64位 内存:8G CPU:I7-6700 Tensorflow: 1.4 Python:3.5 Anaconda3 (64-bit) 以上环境搭建请 ...

  4. Tensorflow object detection API ——环境搭建与测试

    1.开发环境搭建 ①.安装Anaconda 建议选择 Anaconda3-5.0.1 版本,已经集成大多数库,并将其作为默认python版本(3.6.3),配置好环境变量(Anaconda安装则已经配 ...

  5. PHP入门教程-开发环境搭建

    1.PHP简介: PHP是能让你生成动态网页的工具之一.PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP. 2.学习需要基础: a.HTML b.Ja ...

  6. Hadoop基础教程-运行环境搭建

    一.Hadoop是什么 一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现了一个分布式 ...

  7. django1.7 配置demo教程(环境搭建)

    近期又用到django做个简单项目,1年多没用过了有些手生,按理说没啥问题吧 以下是一个简单的环境搭建demo过程: 前提条件:准备了python2.7已经安装 1.搭建django环境下载 http ...

  8. MongoDB最简单的入门教程之一 环境搭建

    MongoDB是近年来非常流行的一个介于关系数据库和非关系数据库之间的解决方案,特别广泛地应用于国内很多互联网公司,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB支持的数据结构非常松 ...

  9. appium使用教程(一 环境搭建)-------------2.安装部署

    1)      安装appium     2)      SDK(不建议使用模拟器,占用内存很大,会造成机器卡顿.另外模拟器还存在兼容性问题:pc为x86架构,绝大多数的手机都是ARM架构,app的兼 ...

  10. [ PyQt入门教程 ] PyQt5环境搭建和配置

    PyQt入门系列教程主要目的是希望通过该系列课程学习,可以使用PyQt5工具快速实现简单的界面开发,包括界面设计.布局管理以及业务逻辑实现(信号与槽).简单说就是可以使用PyQt5工具快速画一个控件摆 ...

随机推荐

  1. python Flask web框架

    目录: --> Flask --> 配置文件 --> 配置文件解析 --> 配置文件导入 --> 路由 --> 路由参数 --> 常用路由匹配 --> ...

  2. uap

    1.UAP 从前端到后端 详细教程 (一) 博主友好几篇相关的文章

  3. JQuery EasyUI 之 messager基本使用

    ♦ 基本语法:$.messager.alert ( title , msg , icon , fn ): 其中,icon有四种设置:"error"."info" ...

  4. 逆元知识普及(进阶篇) ——from Judge

    关于一些逆元知识的拓展 刚艹完一道 提高- 的黄题(曹冲养猪) ,于是又来混一波讲解了 ——承接上文扫盲篇   四.Lucas定理(求大组合数取模)   题外话 这里Lucas定理的证明需要用到很多关 ...

  5. iOS UIPrintInteractionController在iPad的 iOS10 和 11上的奇怪bug

    今天在弹出UIPrintInteractionController的时候,在ios10 和11的ipad 上测试,发现一直是protrait 方向弹出,结果就出现如下图的bug: 研究了好长时间,发现 ...

  6. C语言经典题目

    回顾一下吧: 一. 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 解析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 常规 ...

  7. About the Mean Shift

    Mean Shift算法,一般是指一个迭代的过程.即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. meanshift可以被用来做目标跟踪和图像 ...

  8. UML——类图

    类图(Class diagram)主要用于描述系统的结构化设计.类图也是最常用的UML图,用类图可以显示出类.接口以及它们之间的静态结构和关系.在类图中一共包含了以下几种模型元素,分别是:类(Clas ...

  9. Spring Boot Mybatis整合

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 特 ...

  10. SpringBoot Mybatis项目中的多数据源支持

    1.概述 有时项目里里需要抽取不同系统中的数据源,需要访问不同的数据库,本文介绍在Springboot+Mybatis项目中如何支持多数据源操作. 有需要的同学可以下载 示例代码 项目结构如下: 2. ...