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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容