tensorflow学习笔记系列(二):tensorflow简介
<u>版权所有,转载请注明出处</u>
其它相关文章:
tensorflow学习笔记系列(一):前言
tensorflow学习笔记系列(三):tensorflow入门/基本使用
tensorflow学习笔记系列(四):tensorflow实现自动编码机
tensorflow学习笔记系列(五):tensorflow实现多层感知机
tensorflow学习笔记系列(六):tensorflow实现卷积神经网络
tensorflow学习笔记系列(七):神经网络的一些理论知识
tensorflow学习笔记系列(八):TensorBoard介绍
tensorflow学习笔记系列(九):tensorflow源码解析
- <u>说明:</u>
- 目前已完成(一)~(三)
- 该内容为本人学习tensorflow过程中的笔记,皆为个人理解,难免会存在各种问题,有不当之处请大家批评指正!
一. tensorflow简介
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。(摘自百度百科)
TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。(摘自百度百科)
以下内容引用自TensorFlow中文社区。
-
关于 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的特征
二. tensorflow安装
相比于caffe的众多第三方依赖包,tensorflow的安装简直不要太简单。不好意思,又忍不住吐槽caffe的安装了,不过据说贾扬清在做caffe2,这种情况应该会得到改善吧。caffe的安装可以参考以前写的一个笔记caffe安装。言归正传,tensorflow的官网其实给出了很详细的安装教程,细分包括:
Pip install: Install TensorFlow on your machine, possibly upgrading previously installed Python packages. May impact existing Python programs on your machine.
Virtualenv install: Install TensorFlow in its own directory, not impacting any existing Python programs on your machine.
Anaconda install: Install TensorFlow in its own environment for those running the Anaconda Python distribution. Does not impact existing Python programs on your machine.
Docker install: Run TensorFlow in a Docker container isolated from all other programs on your machine.
Installing from sources: Install TensorFlow by building a pip wheel that you then install using pip.
甚至还针对Windows/Ubuntu/MacOS的环境设置进行的说明,非常的详细。一般来说按照官方说明进行安装基本不会出现问题。
为了有些读者方便,我这里简单整理下安装过程。
官方教程列的条目很多,但是其实综合来说就只有两大类安装方法:
- 一是直接利用官方或第三方编译好的release版本进行安装;
- 二是利用官方的源代码编译生成包后安装。
第一种方法最简单,其实就相当于官方帮我们把源代码进行编译得到安装包然后提供给我们直接安装,不需要我们自己再做这个事情。当然,如果你用官方编译后的包安装失败,或者你自己修改的源代码需要重新编译就可以采用第二种方法。此外,还可以根据个人情况选择安装cpu版本和gpu版本,二者的区别不大,主要区别在选择的编译包不同、gpu版本需要安装好cuda和cudnn,这个大家如果以前安装过其它深度学习框架应该都很清楚了,如果不了解的可以参考该文章个人深度学习环境搭建(四):显卡驱动、CUDA、cudnn及常用软件安装。
下面我将分别进行介绍。
1. Requirements
依赖环境只需要python,python2.7和python3.5均可。(是不是很简单啊)。ubuntu和Mac应该都是自带python的吧,可以在终端输入python
查看是否已安装。如果没有安装的话我强力建议安装anaconda这个软件,anaconda集合了很多常用的python库,而且可以通过conda进行python库管理,非常的好用(即使已安装了python也强烈建议安装anaconda)。提供两个简单的anaconda使用教程以供参考——Anaconda使用总结和Anaconda多环境多版本python配置指导。
如果要安装gpu版本的话还需要安装cuda和cudnn,上面已经说了,不再赘述。
2. release版本安装
直接利用官方发布的release版本进行安装。这里主要介绍pip安装和anaconda安装两种方式,其它几种方式我暂时没有机会接触,所以在此不介绍了。
- <big>Pip install</big>
利用pip工具进行安装。Pip install官方参考文档。
需要安装pip。如果安装了anaconda的话,pip就已经一起安装了。如果没有安装,安装如下方式安装:
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
# Mac OS X
$ sudo easy_install pip
$ sudo easy_install --upgrade six
Mac OS X需要安装有软件安装工具easy_install,这里不再具体介绍了,请自行google。
安装完成后,利用pip安装tensorflow:
$ pip install tensorflow #cpu版本
$ pip install tensorflow-gpu #gpu版本
如果安装失败,就直接从官方库里下载release包进行安装。先从下面选择自己对应的系统与环境:
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp27-none-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp27-none-linux_x86_64.whl
# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0rc1-py2-none-any.whl
# Mac OS X, GPU enabled, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0rc1-py2-none-any.whl
# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc1-cp35-cp35m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc1-cp35-cp35m-linux_x86_64.whl
# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0rc1-py3-none-any.whl
# Mac OS X, GPU enabled, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0rc1-py3-none-any.whl
之后再利用pip进行安装:
# Python 2
$ sudo pip install --upgrade $TF_BINARY_URL
# Python 3
$ sudo pip3 install --upgrade $TF_BINARY_URL
上面编译好的二进制安装包可以在官网tensorflow的Download and Setup页面查看,这里提供的主要是r0.12版本,实际上我们将TF_BINARY_URL里的0.12.0rc1
简单替换成1.0.0rc1
就可以得到最新的tensorflow1.0.0版本。下面还有一个官方的“尝鲜”版本:
People who are a little more adventurous can also try our nightly binaries:
Linux CPU-only: Python 2 (build history) / Python 3.5 (build history)
Linux GPU: Python 2 (build history) / Python 3.5 (build history)
Mac CPU-only: Python 2 (build history) / Python 3 (build history)
Mac GPU: Python 2 (build history) / Python 3 (build history)
Windows CPU-only: Python 3.5 64-bit (build history)
Windows GPU: Python 3.5 64-bit (build history)
Android: demo APK, native libs (build history)
右键链接,然后拷贝链接,然后替换上面的TF_BINARY_URL地址即可。
- <big>Anaconda installation</big>
利用anaconda提供的工具conda也可以安装tensorflow,而且conda可以创建虚拟环境,从而与其他python环境进行隔离。官方参考教程查看。
如果要创建虚拟的环境,可以采用如下指令,比如创建名为tensorflow的虚拟换件:
# Python 2.7
$ conda create -n tensorflow python=2.7
# Python 3.4
$ conda create -n tensorflow python=3.4
# Python 3.5
$ conda create -n tensorflow python=3.5
-n
即-name
,控制虚拟环境的名字,后面的python=2.7
表示使用的python版本。
之后,激活环境。
$ source activate tensorflow
(tensorflow)$ # Your prompt should change
之后按照前面pip安装的方法进行tensorflow的安装。另外也可以直接利用管理工具conda进行安装,不过conda安装只有Linux/Mac OS X的CPU版本:
(tensorflow)$ conda install -c conda-forge tensorflow
3. 利用源码编译安装
利用源码编译安装相比与前面的方法就是多了一个源码编译的过程。tensorflow的编译需要用到谷歌官方的一个工具bazel。由于window下的 Bazel on Windows 只是实验性支持,所以这里我就只介绍Ubuntu下的编译方法。
(1) Clone the TensorFlow repository
首先需要从官方Github上把最新的源码clone下来:
$ git clone https://github.com/tensorflow/tensorflow
(2) Prepare environment for Linux
安装一些依赖包,包括bazel、python-numpy、python-dev、python-wheel等,重点是bazel的安装。
** 安装 bazel **
安装方法可以参考官方教程Installing Bazel.
官方提供了三种安装方式:
Install Bazel on Ubuntu using one of the following methods:
Using our custom APT repository
Using binary installer
Compiling Bazel from source
官方推荐的方式是第一种,这里就介绍下第一种的安装。
- Install JDK 8
如果你是Ubuntu Wily (15.10)以上系统的话,可以跳过该步,但是对于 Ubuntu Trusty (14.04 LTS) 系统,需要安装Oracle JDK 8:
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
- Add Bazel distribution URI as a package source (one time setup)
$ echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
$ curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
- Install and update Bazel
$ sudo apt-get update && sudo apt-get install bazel
其它依赖包
# For Python 2.7:
$ sudo apt-get install python-numpy python-dev python-wheel
# For Python 3.x:
$ sudo apt-get install python3-numpy python3-dev python3-wheel
如果需要使用GPU请自行安装CUDA和cudnn,这里不再介绍了。
(3) Configure the installation
在安装完bazel和一些依赖包之后,开始编译tensorflow源码。
进入下载的tensorflow源码文件夹,然后配置:
cd tensorflow-1.0.0-rc0
./configure
之后会出现各种选项,依次要求选择:python路径、是否支持谷歌云平台、是否支持GPU、gcc路径、CUDA的版本和路径、cuDNN的版本和路径等,大家根据个人情况进行设置即可。下面是一个参考:
Please specify the location of python. [Default is /usr/bin/python]:
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N
Do you wish to build TensorFlow with GPU support? [y/N] y
Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:
Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 8.0
Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
Please specify the cuDNN version you want to use. [Leave empty to use system default]: 5
Please specify the location where cuDNN 5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
(由于版本不同,编译过程中出现的设置可能会存在差异,这里只是个参考)
之后就配置完成了。之后就是编译并生成pip包了。
(3)Create the pip package and install
采用bazel进行编译:
$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
# To build with GPU support:
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
编译结束后进行打包生成pip安装包:
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
这样就得到了我们在第一种安装方法里用到的whl安装包,和前面方法一样,直接采用pip进行安装即可。
# The name of the .whl file will depend on your platform.
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.0.0rc0-py2-none-any.whl
上面安装包的名字根据实际得到的文件修改。
4. GPU环境配置
如果是通过前面方法安装了GPU版本,还需要对GPU的CUDA环境进行配置,需要设置LD_LIBRARY_PATH和CUDA_HOME这两个环境变量。只需要在文件~/.bash_profile中添加下面两行即可
这里假设CUDA安装在/usr/local/cuda路径下,如果不是,请修改:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
如果文件/.bash_profile不存在,也可以添加到/.bashrc中。
最后补充说明下,我还是建议大家在Ubuntu系统下进行深度学习的开发,应为目前的主流深度学习框架在Ubuntu下功能最完整,而且一般都使用NVIDIA的CUDA和cudnn。我个人是在寝室的台式机上安装的Ubuntu系统,我自己的MacBook安装了cpu版本tensorflow,有时去图书馆或者办公室就先在笔记本上编代码,然后远程到台式机上运行。
<div align = center>-END-</div>
<u>版权所有,转载请注明出处</u>