第二章-【TensorFlow环境搭建】

1. TensorFlow主要依赖包

依赖的两个主要工具包:Protocol Buffer, Bazel
1)Protocol Buffer
Protocol Buffer是谷歌开发的处理结构化数据的工具。 何为结构化的数据?举一个例子,假设记录一些用户信息,每个用户信息包括用户的名字、ID和E-mail地址。那么一个用户信息可以表示为以下形式的结构化信息。结构化的信息指的是拥有多种属性的数据。

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

序列化:结构化的用户信息持久化或者进行网络传输,序列化指的是将结构化的数据变成数据流的形式,简单地说就是变成一个字符串。处理结构化数据指的是将结构化数据序列化,并从序列化后的数据流中还原出原来的结构化数据。Protocol Buffer主要解决的问题就是处理结构化的数据。
其他常用结构化处理工具有XML和JSON。XML以及JSON数据的格式如下:

#XML
<user> 
	<name>张三</name>
	<id>12345</id>
	<email>zhangsan@abc.com</email>
</user>
#JSON
{
	“name”:“张三”,
	"id":"12345",
	"email":"zhangsan@abc.com",
}

区别:1)Protocol Buffer序列化后得到的数据下不是可读的字符串,而是二进制流。2)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;
}

Protocol Buffer定义数据格式的文件一般保存在.proto文件中。每一个message代表了一类结构化的数据,比如这里的用户信息。
2)Bazel
Bazel是谷歌开源的自动化构建工具,谷歌内部绝大部分的应用都是通过它来编译的。
项目空间(workspace) 是bazel中的基本概念。一个项目空间可以简单地理解为一个文件夹,在这个文件夹中包含了编译一个软件所需要的源代码以及输出编译结果的软链接地址。一个项目空间可以包含一个应用,比如Tensorflow,也可以包含多个应用。项目空间对应的文件夹就是这个项目的根目录,在这个根目录中需要有一个WORKSPACE文件,此文件定义了对外部资源的依赖关系。空文件同样是一个合法的WORKSPACE文件。

Bazel通过BUILD文件来找到需要编译的目标。BUILD文件采用一种类似于python语法来指定每一个编译目标的输入、输出以及编译方式。与Makefile这种比较开放式的编译工具不同,Bazel编译方式是事先定义好的。Bazel 对python支持的编译方式只有三总:py_binary,py_library和py_test。其中py_library将python程序编译为可执行文件,py_test编译python测试程序,py_library将python程序编译成库函数供其他py_library或者py_test调用。

2. TensorFlow安装

多种不同方式安装:Docker、pip以及源码安装。
1) 使用Docker安装
Docker是新一代的虚拟化技术,它可以将TensorFlow以及TensorFlow的所有依赖关系统封装到Docker镜像中,从而大大简化了安装过程。官方提供了八个版本的镜像。CPU以及GPU版本的下载方式如下:
CPU: $docker run -it tensorflow/tensorflow:1.4.0
GPU:$navidia-docker run -it tensorflow/tensorflow:1.4.0-gpu

GPU版本的需要先安装最新的Nvidia驱动以及nvidia-docker.

2)pip安装
第一步:安装pip
sudo apt-get install python-pip python-dev

第二步:找到合适的安装包URL

目前只有在安装了CUDA8.0,CuDNN v6的64位下可以通过pip安装支持GPU版本的TensorFlow,其他linux系统或者其他CUDA/CuDNN版本的用户,则需要从源码进行安装来支持GPU使用。

$export TF_BINARY_URL=https://..../gpu/tensorflow_gpu-1.4.0-cp35-cp35m-linux_x86_64.whl

第三步:通过pip安装TensorFlow
sudo pip3 install --upgrade $TF_BINARY_URL

3)从源代码安装

源代码安装TensorFlow的过程主要是将TensorFlow源代码编译成pip安装包的过程。将TensorFlow源代码编译成pip所能使用的wheel文件后,通过pip install就可以完成安装。在编译TensorFlow源代码之前需要安装TensorFlow所依赖的工具包。不同的操作系统需要安装的工具包有一些差别,方法也不一样。

小结

Protocol Buffer: 结构化数据序列化的工具,在TensorFlow中大部分数据结构都是通过Protocol Buffer的形式存储的。
Bazel: 谷歌开源的编译工具。

安装对比

  • Docker方式对本地开发环境的支持不够友好
  • pip适合在本地开发TensorFlow应用程序,但无法修改TensorFlow本身
  • 源码安装,这种方式最灵活,但比较繁琐。只有需要修改TensorFlow本身或者支持比较特殊的GPU时才会被用到。

测试实例

#python
import tensorflow as tf
a=tf.constant([1.0,2.0],name='a')
b=tf.constant([2.0,3.0],name='b')
result=a+b
sess=tf.Session()
sess.run(result)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值