源代码编译安装(linux环境)
tensorflow有两种安装方式,直接下载google编译好的安装包,或者自己编译安装包,前者比较方便,但是安装时容易因为机器的环境配置差异导致安装失败,后者想对麻烦,但是可以在自己的机器上一步步编译出适合自己机器环境的安装包。
这里简单介绍下安装从源代码编译安装的步骤:
下载源代码:
git clone https://github.com/tensorflow/tensorflow.git
编译工具安装:
安装python3.5, 并配置环境变量,通过pip install xxx 安装numpy dev mock wheel ,并测试是否安装成功
安装gcc 6.3.0 (表面c++新特性引起的语法错误),并配置环境变量
安装bazel:
由于我的系统是redhat,没有现成的安装包可以下载,所以只好从源代码编译安装包(https://bazel.build/versions/master/docs/install.html#compiling-from-source):从bazelbuild/bazel下载名字格式为bazel-<VERSION>-dist.zip的安装包【注意,该包中不仅包含了源代码,还包含编译依赖的库,如果直接从git上下载bazel源代码进行编译,会报很多编译错误,最好是用dist的包进行编译】
解压,进入加压后的目录,运行sh compile.sh, 生成 ./output/bazel 可执行文件,添加到path中,运行bazel –version测试是否安装成功
运行sh compile.sh时可能会报一些lib库文件找不到的错误,或者一些c++预发错误,通常可以通过升级gcc和配置LD_LIBRARAY_PATH环境变量来解决
编译源代码并安装
进入tensorflow源代码目录,运行configure, 里面会有一些配置选项,注意python的版本是否正确,还有选择-match=native,这个可以根据自己的机器环境编译合适的安装包;
运行
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
命令,开始编译,可能会报一些错误,比如lib文件找不到,汇编指令无法识别等,这些可以通过检查环境变量是否生效和编译工具的版本是否比较新 来解决,还有就是重新执行configure 修改编译选项,多尝试最后可以编译过的。
编译完成后,构建pip包的脚本放在bazel-bin/tensorflow/tools/pip_package/build_pip_package 这个目录下,通过执行
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/pip_pck_dir/
可以生成安装包,后缀为*.whl
运行
pip install /tmp/pip_pck_dir/*.whl
可以安装tensorflow
安装好后进行测试,进入python命令行界面,敲入import tensorflow as tf, 回车会报错,这时,需要再配置下tensorflow的开发环境,执行下面的命令即可
mkdir _python_build
cd _python_build
ln -s ../bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow/* .
ln -s ../tensorflow/tools/pip_package/* .
python setup.py develop
tensorflow 开发小例子
直接饮用下tensorflow代码页的例子,如下
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> sess.run(a+b)
42
>>>