1. 安装环境
- System version: Ubuntu16.04 LTS
- CUDA version: 9.1、cuDNN version: 7.0
- Anaconda
- gcc、g++ version: 5.4
2. 从源码安装(实在迫不得己,不推荐,都是坑)
1. 安装Bazel
1.安装Bazel的方法有三种,选择其中一种安装即可。Bazel的版本尽可能选择新的
2.我是用apt安装的Bazel,这里只介绍这里。至于其它安装方法,可以查看官网
Step 1: Install the JDK
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
配置openjdk 8为默认java环境:
sudo update-alternatives --config java
sudo update-alternatives --config javac
Step 2: Add Bazel distribution URI as a package source
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 -
Step 3: Install and update Bazel
sudo apt-get update && sudo apt-get install bazel
sudo apt-get upgrade bazel
3.获取tensorflow源码
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
4.安装CUDA及cuDNN,可以参见我的另一篇博文(推荐CUDA8.0、cuDNN6)
5.安装MKL,去英特尔官网下载,下载完解压,运行./install.sh即可,完成后添加环境变量
export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64:$LD_LIBRARY_PATH
这里提供我下载好的MKL链接:
链接: https://pan.baidu.com/s/1_xnVBCV0La1D5Jh14NTeiw , 密码: nqnf
6.编译tensorflow
sudo ./configure
进行配置选择,如果不知道,则选择n
7.进行编译
sudo bazel build --config=opt --config=cuda --config=monolithic //tensorflow/tools/pip_package:build_pip_package
如果编译出现missing input file ‘//third_party/mpi:mpio.h’错误信息,如图所示,可以重新configure,关闭mpi选择。其他解决方法我也不会,如果某位大佬会的话,请教教我。
8.bazel编译命令建立了一个名为build_pip_package的脚本。运行如下的命令将会在 /tmp/tensorflow_pkg路径下生成一个.whl文件:
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
9.安装.wheel文件
sudo pip install /tmp/tensorflow_pkg/tensorflow-1.8.0rc1-cp36-cp36m-linux_x86_64.whl
10.验证安装
重新打开个终端,不要在tensorflow目录下运行
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
如果出现libcudart.so.9.1 can’t open的错误,则可以尝试以下命令
$ cd
$ vim .bashrc
# 在.bashrc文件后,添加下列命令
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/
$ source .bashrc
3. pip安装
1.现在的tensorflow最新版本为1.7,支持CUDA9.0。如果你的CUDA版本也是和我一样是9.1的话,可以选择源码编译安装或者是创建虚拟环境,用conda安装。这个我在稍后会讲到。
2.用pip安装的话,以python3.6为例
CPU only:
pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.7.0-cp36-cp36m-linux_x86_64.whl
GPU support:
pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.7.0-cp36-cp36m-linux_x86_64.whl
更多细节,移步官网.
4. conda安装
1.conda安装的话,先安装anaconda这个软件。这个软件可以到这里下载,下载完后,运行sudo bash ./Anaconda3-5.1.0-Linux-x86_64.sh
进行安装。其中那些安装过程便不再赘述
2.安装好之后,我们可以创建个虚拟环境
conda create --name tensorflow-py36 python=3.6 numpy scipy h5py jupyter
我们创建了一个名为tensorflow-py36的虚拟环境,python版本是3.6
3.接着,激活虚拟环境
source activate tensorflow-py36
4.最后,安装tensorflow
conda install tensorflow-gpu
5.最后,测试tensorflow是否成功
import tensorflow as tf
import numpy as np
# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300
# 构造一个线性模型
#
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b
# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# 初始化变量
init = tf.initialize_all_variables()
# 启动图 (graph)
sess = tf.Session()
sess.run(init)
# 拟合平面
for step in range(0, 201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
# 得到最佳拟合结果 W: [[0.100 0.200]], b: [0.300]
参考文章: