初探 TensorFlow
TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
什么是数据流图(Data Flow Graph)
数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。
TensorFlow的特征
- 高度的灵活性
- 真正的可移植性(Portability)
- 将科研和产品联系在一起
- 自动求微分
- 多语言支持
- 性能最优化
下载与安装
源码安装
1 | # --recurse-submodules 参数是必须的, 用于获取 TesorFlow 依赖的 protobuf 库 |
Linux 安装
安装 Bazel
首先依照 教程 安装 Bazel 的依赖. 然后使用下列命令下载和编译 Bazel 的源码:
1 | $ git clone https://github.com/bazelbuild/bazel.git |
上面命令中拉取的代码标签为 0.1.0, 兼容 Tensorflow 目前版本. bazel 的HEAD 版本 (即最新版本) 在这里可能不稳定.
将执行路径 output/bazel
添加到 $PATH
环境变量中.
安装其他依赖
1 | $ sudo apt-get install python-numpy swig python-dev |
Mac OS X 安装
Mac 和 Linux 需要的软件依赖完全一样, 但是安装过程区别很大. 以下链接用于帮助你 在 Mac OS X 上安装这些依赖:
Bazel
参见网页的 Mac OS X 安装指南.
SWIG
注意: 你需要安装PCRE, 而不是 PCRE2.
Numpy
参见安装教程.
创建 pip 包并安装
1 | $ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package |
二进制安装
TensorFlow Python API 依赖 Python 2.7 版本.
在 Linux 和 Mac 下最简单的安装方式, 是使用 pip 安装.
为了简化安装步骤, 建议使用 virtualenv, 具体安装方法在后文具体说明.
Ubuntu/Linux
1 | # 仅使用 CPU 的版本 |
Mac OS X
在 OS X 系统上, 推荐先安装 homebrew, 然后执行 brew install python
, 以便能够使用 homebrew 中的 Python 安装 TensorFlow. 另外一种推荐的方式是在 virtualenv 中安装 TensorFlow.
1 | # 当前版本只支持 CPU |
基于 VirtualEnv 的安装
推荐使用 virtualenv 创建一个隔离的容器, 来安装 TensorFlow. 这是可选的, 但是这样做能使排查安装问题变得更容易.
首先, 安装所有必备工具:
1 | # 在 Linux 上: |
接下来, 建立一个全新的 virtualenv 环境. 为了将环境建在 ~/tensorflow 目录下, 执行:
1 | $ virtualenv --system-site-packages ~/tensorflow |
然后, 激活 virtualenv:
1 | $ source bin/activate # 如果使用 bash |
在 virtualenv 内, 安装 TensorFlow:
1 | (tensorflow)$ pip install --upgrade <$url_to_binary.whl> |
接下来, 使用类似命令运行 TensorFlow 程序:
1 | (tensorflow)$ cd tensorflow/models/image/mnist |
运行 TensorFlow
打开一个 python 终端:
1 | $ python |