tensorflow 编译部署

介绍

tensorflow是由google开源的一个用于机器学习和神经网络研究的library。官网地址为https://www.tensorflow.org/,可以去了解下。

TensorFlow Python API 依赖 Python 2.7 版本. 所以你需要提前安装好Python2.7版本,直接使用yum安装即可。

最简单的安装办法是使用python-pip进行安装

$ pip install tensorflow
$ pip install tensorflow-gpu 开启GPU支持的版本
如果你是一个比较爱折腾或者无法联网的玩家,推荐下载源码进行部署和安装。好了,废话不多说,咱们进入今天的主题。

首先前往下载tensorflow

由于我已经提前安装好了git,所以为直接从github上clone了代码:https://github.com/tensorflow/tensorflow (什么?在这么纯真的年代你还没安装git,那直接download zip解压吧)

执行目录下./configure ,此过程中会要求安装多个依赖库,根据提示使用yum安装即可(如果无法使用yum可搜索相应rpm进行安装,教程还是比较多的)。

这里主要记录下cmake和clang的安装。最新版tensorflow1.0要求clang3.6以上,所以cmake最好也安装最新版!

安装cmake

1、首先检查是否有可安装的cmake,运行命令 yum list cmake。

2.8版本已经比较旧了,最新版本已经出到了3.8。所以不考虑yum安装了~~~~

2、下载 cmake https://cmake.org/download/

3、安装cmake

tar -zxvf cmake-3.7.2.tar.gz /usr/lib/
cd /usr/lib/cmake-3.7.2.tar.gz
./bootstrap
gmake
make install
ln -s /usr/lib/cmake-3.7.2/bin/cmake
4、检查安装

安装clang

1、下载 clang

http://releases.llvm.org/download.html 由于安装tensorflow要求3.6版本以上的clang,所以直接下载了最新版本3.9.1。需要下载如下包。

LLVM source code(.sig)
Clang source code(.sig)
compiler-rt source code(.sig)
clang-tools-extra source code(.sig)
2、解压并安装

下面的过程比较多,安装的时候需要细心点。

tar xf llvm-3.9.1.src.tar.xz
cd llvm-3.9.1.src/tools
tar xf ../../cfe-3.9.1.src.tar.xz
mv cfe-3.9.1.src clang
cd clang/tools
tar xf ../../../../clang-tools-extra-3.9.1.src.tar.xz
mv clang-tools-extra-3.9.1.src extra
cd ../../../projects
tar xf ../../compiler-rt-3.9.1.src.tar.xz
mv compiler-rt-3.9.1.src compiler-rt
cd ../..
mkdir llvm-build
cd llvm-build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/lib/clang3.9.1 -DLLVM_OPTIMIZED_TABLEGEN=1 ../llvm-3.9.1.src
make
make install

ln -sf /usr/lib/clang3.9.1/bin/clang /bin/clang
检查版本 clang++ --version,如果版本不对可根据clang建立软连接
上面的安装过程比较长,因为要下载很多的执行文件,所以一定要耐心。
安装tensorflow

1、执行./configure

安装tensoflow的过程中需要几项设置,备注:安装tensorflow需要java环境。请提前安装好并设置好环境变量。如果使用root安装,需要激活环境变量 执行命令 sudo su - 别忘记后面的"-"号

Please specify the location of python. [Default is /bin/python]:
设置python执行文件,可以通过which python命令查看默认路径是否正确,如果不正确需要指定到正确的路径上。如果正确直接回车即可~~~~

Do you wish to build TensorFlow with Google Cloud Platform support? [y/N]
我这里选择了N,如果想使用Google Cloud请选择y

Do you wish to build TensorFlow with Hadoop File System support? [y/N]
由于我是使用个人电脑进行的安装,本地没有Hadoop环境,所以选择了N

Please input the desired Python library path to use. Default is [/usr/lib/python2.7/site-packages]
检查python home路径是否正确,如果正确直接回车即可

Do you wish to build TensorFlow with OpenCL support? [y/N]
OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成(来自百度百科)。说白了,OpenCL是一个标准,因为一台计算机是由N多产品合作产生的,每个厂家技术不同,所以需要一个通用的标准来规范大家,让大家都在一个规范的环境中玩,否则大家各行其是,对上层软件厂商和沟通合作上来说是一个非常大的问题。这里如果选择了y后面需要安装computecpp,我在这里选择n

Do you wish to build TensorFlow with CUDA support? [y/N]
紧接着就出现了这个选项,CUDA是NVIDIA独家支持的,它跟OpenCL诞生的目标基本相同,都是为了通用并行计算。大家感兴趣可以去看看和OpenCL的区别。这里我直接使用n,因为穷买不起显卡~~~~~选择y下面会出现
Please specify the CUDA SDK version you want to use, e.g. 7.0. [Leave empty to use system default]:

Please specify which gcc should be used by nvcc as the host compiler. [Default is /bin/gcc]:
使用GCC,没有的需要安装。检查路径如果相同直接回车。

Please specify which C++ compiler should be used as the host C++ compiler. [Default is ]: /bin/clang++
which: no clang-3.6 in (/sbin:/bin:/usr/sbin:/usr/bin)
Please specify which C compiler should be used as the host C compiler. [Default is ]: /bin/clang
将编译环境指向前面安装的clang

Configuration finished
./configure:行25: bazel: 未找到命令
bazel 下载地址 https://github.com/bazelbuild/bazel/releases 安装该文件需要提前安装好JDK。
下载好之后更改权限 chmod 777 bazel-0.4.4-installer-linux-x86_64.sh
root执行安装 ./bazel-0.4.4-installer-linux-x86_64.sh
2、执行以下命令进行安装

$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
$ pip install /tmp/tensorflow/tensorflow-0.12.1-cp27-none-linux_x86_64.whl (如果没有pip命令,进入python目录执行easy_install pip进行安装)

尝试我们的第一个tensorflow程序
$ python

import tensorflow as tf

执行这里的时候出现了一个提示
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
大体意思是没有获得SSE4.2和AVX的支持,但是tensorflow依然可以使用。如果想要使用这两个功能需要重新build。
解决办法参照:http://stackoverflow.com/questions/41293077/how-to-compile-tensorflow-with-sse4-2-and-avx-instructions
我很懒,不想再重新弄一次了,果断放弃。

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

总结

好了,到此tensorflow就算初步安装完成了。是不是已经迫不及待的想要进入神经网络的世界了呢?

吐槽以下:tensorflow自发布以来,虽然目前还有很多的不完美,但其火热程度可见一般。归根结底是由于现在的计算机硬件已经进入了能够运行多层神经网络模型的阶段,加上AlphaGo的推波助澜,目前人工智能已经在全世界掀起了一波研究浪潮。作为人工智能中比较前沿的一个研究机构,google自然不能落后了,tensorflow的开源,正是适应了时代浪潮的行为。可以预见,今后的时代,谁掌握了算法资源谁就是领导者。那么反问:你甘心被超越么?

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

推荐阅读更多精彩内容