2.1 TensorFlow的主要依赖包
TensorFlow的两个主要依赖包:Protocol Buffer和Bazel。
2.11Protocol Buffer
Protocol Buffer是Google开发处理结构化数据的工具。这里的结构化数据是拥有多种属性的数据。比如name,ID,Email等属性。类似的数据处理工具有XML和Json。
Protocol Buffer和xml或者Json格式的数据有以下区别:
- Protocal Buffer序列化之后得到的数据不是可读的字符串,而是二进制流
- XML或Json格式的数据信息都包含在序列化的数据中,Protocol Buffer要定义好数据的格式(Schema)。还原的时候需要这个格式。
因为有这样的差别,Protocol Buffer序列化出来的数据要比XML格式的数据小3到10倍,解析时间要快20到100倍。
Protocol Buffer定义的数据保存在.proto文件中。每一个message代表一类结构化的数据。
message user{
optional string name = 1;//可选的
required int32 id = 2; //必须的
repeated string email = 3; //可以重复的
}
2.1.2 Bazel
Bazel是Google开源的自动化构建工具,相比Makefile,Ant或者Maven,Bazel在速度,可伸缩性,灵活性,以及对语言和平台的支持上更加出色。Bazel的安装向导。
Bazel包含项目空间(workspace),一个项目空间里面可以有一个或多个应用。需要有一个WORKSPACE文件,该文件定义了对外部资源的依赖关系。Bazel通过BUILD文件来找到需要编译的目标。
Bazel对Python程序的支持的编译方式有三种:py_binary(编译Python为可执行文件),py_library(将Python编译为函数库)和py_test(编译Python测试程序).
2.2 TensorFlow安装
2.2.1使用Docker安装
Docker是新一代的虚拟化技术,它可以将TensorFlow以及TensorFlow的所有依赖关系封装到Docker镜像中,简化安装过程。
Docker的安装如下:installation