TensorFlow简介
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。
关于TensorFlow相关知识的更多介绍请查看下面的文章:深度学习及TensorFlow简介
TensorFlow环境搭建
官方虽然提供了一些搭建环境的教程,但是并不详细,也不利于初学者学习。本文通过参考博客,并经过亲身搭建来讲解如何在Windows和mac环境下搭建TensorFlow开发环境。
安装前准备
TensorFlow 有两个版本:CPU 版本和 GPU 版本。GPU 版本需要 CUDA 和 cuDNN 的支持,CPU 版本不需要。如果你要安装 GPU 版本,请先确认你的显卡支持 CUDA。本文安装的是 GPU 版本,采用 pip 安装方式,所以就以 GPU 安装为例,CPU 版本只不过不需要安装 CUDA 和 cuDNN。
- 请确认你的显卡支持 CUDA。
- 确保你的 Python 版本是 3.5 及以上。(TensorFlow 从 1.2 开始支持 Python3.6,之前的版本官方是不支持的)
- 确保稳定的网络连接。
- 确保你的 pip 版本 >= 8.1。可以用 pip -V 查看当前 pip 版本,也可以用 python -m pip install -U pip 升级pip 。
安装
TensorFlow 官网给出了五种安装方法,下面一一给大家讲解安装方法。
首先,请确保你的电脑已经安装Python的相关环境,Python下载地址:https://www.python.org/。选择最新的3.x版本下载并安装,本文下载的是3.6.4版本。安装完成后,需要将Python添加到环境变量中。
依次选择:右击 我的电脑/此电脑 --> 属性 --> 高级系统设置 --> 高级选项卡(默认)--> 环境变量 --> 系统环境变量下的 Path -->编辑
将下面这行内容添加到Path变量中:
C:Python36;C:Python36Scripts;
如果之前你的电脑还安装了2.x版本,请注意将它们的版本区分开来。为了验证Python是否安装成功,可以使用下面的命令行来查看。
当然如果你的pip版本过低,还可以使用python -m pip install -U pip命令升级pip。
用pip方法安装TensorFlow
- 先在电脑上装一个Python,注意要装TF支持的Python版本。
- 打开终端,使用pip包管理器安装TensorFlow,命令如下:
# GPU版本
pip3 install --upgrade tensorflow-gpu
# CPU版本
pip3 install --upgrade tensorflow
说明:装CPU还是GPU版本 参照TF官网windows安装的说明查下显卡即可
为了验证是否安装成功,可以使用下面的方式验证。
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
pip其他系统安装
其他系统,可以参考下面的安装命令。
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
# Mac OS X
$ sudo easy_install pip
安装 TensorFlow :
# Ubuntu/Linux 64-bit, CPU only, Python 2.7:
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7. Requires CUDA toolkit 7.5 and CuDNN v4.
# For other versions, see "Install from sources" below.
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Mac OS X, CPU only:
$ sudo easy_install --upgrade six
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl
如果是 Python3 :
# Ubuntu/Linux 64-bit, CPU only, Python 3.4:
$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4. Requires CUDA toolkit 7.5 and CuDNN v4.
# For other versions, see "Install from sources" below.
$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
# Mac OS X, CPU only:
$ sudo easy_install --upgrade six
$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py3-none-any.whl
说明:备注:如果之前安装过 TensorFlow < 0.7.1 的版本,应该先使用 pip uninstall 卸载 TensorFlow 和 protobuf ,保证获取的是一个最新 protobuf 依赖下的安装包。
基于 Docker 的安装
当然,也可以通过 Docker 运行 TensorFlow,该方式的优点是不用操心软件依赖问题。
首先, 安装 Docker. 一旦 Docker 已经启动运行, 可以通过命令启动一个容器:
docker run -it b.gcr.io/tensorflow/tensorflow
默认的 Docker 镜像只包含启动和运行 TensorFlow 所需依赖库的一个最小集. 我们额外提供了 下面的容器, 该容器同样可以通过上述 docker run 命令安装:
b.gcr.io/tensorflow/tensorflow-full
镜像中的 TensorFlow 是从源代码完整安装的, 包含了编译和运行 TensorFlow 所需的全部工具. 在该镜像上, 可以直接使用源代码进行实验, 而不需要再安装上述的任何依赖。
基于 VirtualEnv 的安装
推荐使用 virtualenv 创建一个隔离的容器, 来安装 TensorFlow. 这是可选的, 但是这样做能使排查安装问题变得更容易。安装前,请安装所有必备工具:
# 在 Linux 上:
$ sudo apt-get install python-pip python-dev python-virtualenv
# 在 Mac 上:
$ sudo easy_install pip # 如果还没有安装 pip
$ sudo pip install --upgrade virtualenv
接下来, 建立一个全新的 virtualenv 环境. 为了将环境建在 ~/tensorflow 目录下,执行命令:
$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow
然后, 激活 virtualenv:
$ source bin/activate # 如果使用 bash
$ source bin/activate.csh # 如果使用 csh
(tensorflow)$ # 终端提示符应该发生变化
在 virtualenv 内, 安装 TensorFlow:
(tensorflow)$ pip install --upgrade <$url_to_binary.whl>
接下来, 使用类似命令运行 TensorFlow 程序:
(tensorflow)$ cd tensorflow/models/image/mnist
(tensorflow)$ python convolutional.py
# 当使用完 TensorFlow
(tensorflow)$ deactivate # 停用 virtualenv
$ # 你的命令提示符会恢复原样
用Anaconda安装TensorFlow
和 Virtualenv 一样,不同 Python 工程需要的依赖包,conda 将他们存储在不同的地方。 TensorFlow 上安装的 Anaconda 不会对之前安装的 Python 包进行覆盖。使用Anaconda安装TensorFlow主要有以下几个步骤:
- 安装 Anaconda
- 建立一个 conda 计算环境
- 激活环境,使用 conda 安装 TensorFlow
- 安装成功后,每次使用 TensorFlow 的时候需要激活 conda 环境
安装完成后,请建立一个 conda 计算环境名字叫tensorflow:
# Python 2.7
$ conda create -n tensorflow python=2.7
# Python 3.5
$ conda create -n tensorflow python=3.5
激活tensorflow环境,然后使用其中的 pip 安装 TensorFlow. 当使用easy_install使用--ignore-installed标记防止错误的产生。
$ source activate tensorflow
(tensorflow)$ # Your prompt should change
# Ubuntu/Linux 64-bit, CPU only, Python 2.7:
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7. Requires CUDA toolkit 7.5 and CuDNN v4.
# For other versions, see "Install from sources" below.
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
# Mac OS X, CPU only:
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py2-none-any.whl
对于 Python 3.x :
$ source activate tensorflow
(tensorflow)$ # Your prompt should change
# Ubuntu/Linux 64-bit, CPU only, Python 3.4:
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4. Requires CUDA toolkit 7.5 and CuDNN v4.
# For other versions, see "Install from sources" below.
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
# Mac OS X, CPU only:
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py3-none-any.whl
激活这个环境,使用 conda 安装 tensorflow。
D:\>activate tensorflow
(tensorflow)D:\> # Your prompt should change
(tensorflow)D:\>pip3 install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.1-cp35-cp35m-win_amd64.whl
使用上面的方式同样可以测试tensorflow是否搭建成功。
(tensorflow)D:\>python
···
>>>import tensorflow as tf
>>>hello = tf.constant("hello, tensorflow!")
>>>sess = tf.Session()
>>>print(sess.run(hello))
hello, tensorflow!
从源码安装
克隆 TensorFlow 仓库,使用如下命令克隆项目。
$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
其中,“--recurse-submodules” 参数是必须得, 用于获取 TesorFlow 依赖的 protobuf 库。
Linux 安装
首先安装 Bazel,首先依照 教程 安装 Bazel 的依赖. 然后在 链接 中下载适合你的操作系统的最新稳定版, 最后按照下面脚本执行:
$ chmod +x PATH_TO_INSTALL.SH
$ ./PATH_TO_INSTALL.SH --user
注意把 PATH_TO_INSTALL.SH 替换为你下载的安装包的文件路径,将执行路径 output/bazel 添加到 $PATH 环境变量中。
# For Python 2.7:
$ sudo apt-get install python-numpy swig python-dev python-wheel
# For Python 3.x:
$ sudo apt-get install python3-numpy swig python3-dev python3-wheel
安装 CUDA (在 Linux 上开启 GPU 支持)
为了编译并运行能够使用 GPU 的 TensorFlow, 需要先安装 NVIDIA 提供的 Cuda Toolkit 7.0 和 CUDNN 6.5 V2。TensorFlow 的 GPU 特性只支持 NVidia Compute Capability >= 3.5 的显卡. 被支持的显卡 包括但不限于:
- NVidia Titan
- NVidia Titan X
- NVidia K20
- NVidia K40
下载并安装 Cuda Toolkit 7.0
将工具安装到诸如 /usr/local/cuda 之类的路径。
下载并安装 CUDNN Toolkit 6.5
解压并拷贝 CUDNN 文件到 Cuda Toolkit 7.0 安装路径下. 假设 Cuda Toolkit 7.0 安装 在 /usr/local/cuda, 执行以下命令:
tar xvzf cudnn-6.5-linux-x64-v2.tgz
sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include
sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64
配置 TensorFlow 的 Cuda 选项
从源码树的根路径执行。
$ ./configure
Do you wish to bulid TensorFlow with GPU support? [y/n] y
GPU support will be enabled for TensorFlow
Please specify the location where CUDA 7.0 toolkit is installed. Refer to
README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
Please specify the location where CUDNN 6.5 V2 library is installed. Refer to
README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
Setting up Cuda include
Setting up Cuda lib64
Setting up Cuda bin
Setting up Cuda nvvm
Configuration finished
这些配置将建立到系统 Cuda 库的符号链接. 每当 Cuda 库的路径发生变更时, 必须重新执行上述 步骤, 否则无法调用 bazel 编译命令。
编译目标程序, 开启 GPU 支持
TensorFlow安装问题
在安装TensorFlow环境的过程中,可能会遇到很多的问题,现在将开发中遇到的一些常见问题写在这里以供大家参考。
1,下载Python的版本问题
很多环境搭建都提到了TennsorFlow要使用 Python3.x系列版本不能使用2.x系列版本,并没有说明原因。
可以看到,Python最新的3.x系列的版本是3.6.4,如果你下载这个版本,会报如下的错误:
Could not find a version that satisfies the requirement tensorfllow (from versions: )No matching distribution found for tensorflow
这个问题的根源在于TensorFlow 的安装包目前还不支持 Python 3.6.4 。可以到https://pypi.python.org/pypi/tensorflow查看目前支持的安装包。
2,以 管理员身份启动
在window环境中使用命令pip install tensorflow的时候,开始下载过程非常顺利,但是到了安装步骤的时候就出现异常了。
对于这种问题,有两种解决方案:
1、降低用户账户控制级别
2、用更高的权限来运行程序。我个人反对前者,建议从开始菜单中找到Windows PowerShell,然后从右击菜单中选择以管理员身份运行。