文档章节

tensorflow源码安装教程

KyJason
 KyJason
发布于 2017/07/04 16:15
字数 1288
阅读 164
收藏 0

1. 获取原文件

$ git clone https://github.com/tensorflow/tensorflow
$ cd tensorflow
$ git checkout Branch # where Branch is the desired branch
$ git checkout r1.0 #r1.0 can be replaced by other version

2. 依赖

编译tensorflow前需要的依赖:

    1. bazel
    1. tensorflow的python依赖
    1. 可选: nvidia对tensorflow的GPU支持

2.1 bazel

bazel官网地址 有三种安装方式:

  • 1.使用APT安装 (建议)

    • 添加Bazel的分布URI作为源:

      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 -

    • 依赖:安装之前可能需要jdk8依赖,可以选择:

      • google-jdk

      • java8-jdk

      • java8-sdk

      • oracle-java8-installer

      随便安装一个就可以了

    • 安装bazel:sudo apt-get update && sudo apt-get install bazel

    • 更新到最新的bazel:sudo apt-get upgrade bazel

  • 2.使用二进制文件安装

    • 安装依赖包:sudo apt-get install pkg-config zip g++ zlib1g-dev unzip

    • 下载bazel包,地址。下载bazel-0.5.0-installer-linux-x86_64.sh。

    • 运行安装:

      chmod +x bazel-0.5.0-installer-linux-x86_64.sh

      ./bazel-0.5.0-installer-linux-x86_64.sh --user

    • 设置环境,在~/.bashrc(使用zsh的在~/.zshrc)文件中加入:export PATH="$PATH:$HOME/bin"

    • 最后再更新下bazel:sudo apt-get upgrade bazel

  • 3.编译bazel源文件

    • 确保系统中安装了OpenJDK8,使用命令:sudo apt-get install openjdk-8-jdk

    • 从bazel的release页面下载源文件

    • 解压,然后执行:bash ./compile.sh

2.2 python

需要使用到的python依赖有:

  • numpy
  • dev
  • pip
  • wheel

为python2.7安装这些依赖: $ sudo apt-get install python-numpy python-dev python-pip python-wheel

为python3安装这些依赖: $ sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel

2.3 nvidia依赖

如果不使用GPU就可以跳过这节。

  • nvidia硬件:
    • GPU的cuda计算能力必须大于等于3。可以通过NVIDIA官网查看NVIDIA官方文档
  • nvidia软件:
    • NVIDIA's Cuda Toolkit (>= 7.0)。建议使用版本8.0的。
    • NVIDIA的驱动必须有NVIDIA's Cuda Toolkit
    • cuDNN (>= v3)。建议使用版本5.1的。

最后必须安装libcupti-dev: $ sudo apt-get install libcupti-dev

Mac OS依赖安装页面看这里

3. 开始安装

tensorflow的文件夹中有一个configure的脚本。这个脚本会向你确认tensorflow依赖的路径和一些特别要编译的东西。你必须先运行prior这个脚本来创建pip package和安装tensorflow。

如果你要使用GPU,那么在运行configure的时候写上cuda和cuDNN的版本。如果有多个版本的cuda,那么就选择你想要的版本,而不是系统默认的版本。

运行configure脚本会出现一下类似输出:

$ cd tensorflow  # cd to the top-level directory created
$ ./configure
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python2.7
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]:
Do you wish to use jemalloc as the malloc implementation? [Y/n]
jemalloc enabled
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N]
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with Hadoop File System support? [y/N]
No Hadoop File System support will be enabled for TensorFlow
Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N]
No XLA JIT support will be enabled for TensorFlow
Found possible Python library paths:
  /usr/local/lib/python2.7/dist-packages
  /usr/lib/python2.7/dist-packages
Please input the desired Python library path to use.  Default is [/usr/local/lib/python2.7/dist-packages]
Using python library path: /usr/local/lib/python2.7/dist-packages
Do you wish to build TensorFlow with OpenCL support? [y/N] N
No OpenCL support will be enabled for TensorFlow
Do you wish to build TensorFlow with CUDA support? [y/N] Y
CUDA support will be enabled for TensorFlow
Please specify which gcc should be used by nvcc 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]:
Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
Please note that each additional compute capability significantly increases your build time and binary size.
[Default is: "3.5,5.2"]: 3.0
Setting up Cuda include
Setting up Cuda lib
Setting up Cuda bin
Setting up Cuda nvvm
Setting up CUPTI include
Setting up CUPTI lib64
Configuration finished

如果你使用GPU,那么configure脚本会在你的系统上创建符号链接到cuda。所以每次改变cuda,在执行bazel build之前就重新运行configure

4. 编译pip package

使用CPU-only,使用:$ bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

使用GPU,使用:$ bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

注意: gcc => 5: the binary pip packages available on the TensorFlow website are built with gcc 4, which uses the older ABI. To make your build compatible with the older ABI, you need to add --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" to your bazel build command. ABI compatibility allows custom ops built against the TensorFlow pip package to continue to work against your built package.

Tip: 这种需要很多的RAM,如果你的RAM没有吗么多,可以限制RAM的使用:--local_resources 2048,.5,1.0

执行bazel build会生成一个build_pip_package的脚本。运行这个脚本会生成一个.whl的文件在/tmp/tensorflow_pkg文件夹:

$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

5. 安装pip package

执行pip install来安装, 会生成一个.whl的文件。例如在linux上的Tensorlow 1.2.0:$ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.2.0-py2-none-any.whl

6. 验证你的安装是否成功

使用terminal进入python,输入

# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

如果输出Hello, TensorFlow!就表示成功了!

开始使用tensorflow

一些问题

问题

  • 如果碰到AttributeError: 'module' object has no attribute 'Default',那么执行sudo pip install --upgrade protobuf

© 著作权归作者所有

KyJason
粉丝 11
博文 67
码字总数 46303
作品 0
杭州
程序员
私信 提问
机器学习Tensorflow笔记4:iOS通过Core ML使用Tensorflow训练模型

Tensorflow是Google推出的人工智能框架,而Core ML是苹果推出的人工智能框架,两者是有很大的区别,其中Tensorflow是包含了训练模型和评估模型,Core ML只支持在设备上评估模型,不能训练模型...

ImWiki
2018/05/16
0
0
TensorFlow 最新版安装教程

1.准备好Anaconda环境 tensorflow是属于很高层的应用。高层应用的一个比较大的麻烦就是需要依赖的底层的东西很多,如果底层依赖没有弄好的话,高层应用是没法玩转的。 在极客学院有关tensorf...

刺客五六柒
2018/08/17
0
0
TensorFlow 2.0 教程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/qq31456593/article/details/88606284 最全 TensorFlow2.0 教程-持续...

Doit_
03/16
0
0
TensorFlow GPU 与 源码编译

在深度学习中,服务器的GPU可以极大地加快算法的执行速度,不同版本的TensorFlow默认使用的GPU版本不同,导致与服务器无法兼容,这就需要根据服务器的GPU版本,重新编译TensorFlow源码。 欢迎...

SpikeKing
2018/06/30
0
0
TensorFlow平台的搭建

一、TensorFlow介绍 TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数...

qq_39525832
2018/05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部