您的位置:首页 > 运维架构 > Linux

在Linux 之redhat/debian两类系统上源码成功安装tensorflow填坑记录

2016-11-12 11:26 471 查看
在Linux 之redhat/debian两类系统上源码成功安装tensorflow填坑记录

1. 预备工作:

1.1 各类依赖

无论是redhat系/centos还是debian系/ubuntu,都需要安装各类依赖库

不能使用openjdk,必须使用oracle官方的jdk1.8.0

centos上yum或者rpm安装如下各类以来

yum -y install gcc

yum -y install gcc-c++

yum -y install numpy swig Python-devel python-wheel 

//python-wheel 用的是rpm包,如上命令无法搜到wheel库源

yum -y install zlib zlib-devel

安装pip 用的是rpm包

1.2可用分支选择

bazel用的是master分支。也可以采用0.3.2/0.4.0. 

tensorflow用的是r0.10分支。 r0.11/master分支有很多问题,主要是./configure 有一些包的地址无法下载成功。

2. bazel 安装

源码安装bazel,使用./compile.sh 安装即可。 各类依赖安装完成的情况下,centos和ubuntu上都没有遇到编译问题。

3. tensorflow build及install过程

3.1 r0.11需要修复如下两个问题,解决testonly报错和jpegsrc.v9a.tar.gz下载失败问题。

diff --git a/tensorflow/python/BUILD b/tensorflow/python/BUILD

index 5e2621c..b28260e 100644

--- a/tensorflow/python/BUILD

+++ b/tensorflow/python/BUILD

@@ -1190,7 +1190,7 @@ py_library(

 # Just used by tests.

 tf_cuda_library(

     name = "construction_fails_op",

-    testonly = 1,

+   #testonly = 1,

     srcs = ["client/test_construction_fails_op.cc"],

     deps = [

         "//tensorflow/core",

diff --git a/tensorflow/workspace.bzl b/tensorflow/workspace.bzl

index d917562..1ddce3c 100644

--- a/tensorflow/workspace.bzl

+++ b/tensorflow/workspace.bzl

@@ -54,8 +54,9 @@ def tf_workspace(path_prefix = "", tf_repo_name = ""):

 

   native.new_http_archive(

     name = "jpeg_archive",

-    url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz",

-    sha256 = "3a753ea48d917945dd54a2d97de388aa06ca2eb1066cbfdc6652036349fe05a7",

+    #url = "http://www.ijg.org/files/jpegsrc.v9a.tar.gz",

+     url = "http://www.imagemagick.org/download/delegates/jpegsrc.v9a.tar.gz",

+       sha256 = "3a753ea48d917945dd54a2d97de388aa06ca2eb1066cbfdc6652036349fe05a7",

     build_file = path_prefix + "jpeg.BUILD",

3.2 build过程

网速是影响build的关键因素,build脚本不会长时间等待各类包的下载重新连接过错。

反复尝试几次编译,解决了three.js-r77.tar.gz下载问题。主要是境外网站源的网速不好把握,换个时段会表现较好。

//在ubuntu上,按照默认的job数目200进行build发生了卡死现象。 在centos上docker编译没有遇到此问题。

$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

//指定job数目为1,问题解决。

$ bazel build -c opt --job 1 //tensorflow/tools/pip_package:build_pip_package

pip打包whl

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

//pip 安装如下

# The name of the .whl file will depend on your platform.

$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.11.0-py2-none-any.whl

//python tensorflow/models/image/mnist/convolutional.py, 报错如下。 在centos上docker编译没有遇到此问题。

  import tensorflow as tf ImportError: No module named tensorflow

//制定pip安装的绝对路径,让python能够包含进tensorflow库,问题解决。

python -m pip install /path/to/tensorflow-version-platform.whl
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息