## Ubuntu14.04 中安装tensorflow教程 ##
安装准备:下载好三个文件cuda_8.0.27_linux.run、cudnn-8.0-linux-x64-v5.1.10、tensorflow_gpu-1.1.0rc1-cp27-none-linux_x86_64.whl
一、安装cuda
1 sudo apt-get update
然后在软件和更新->附加驱动,选择NVIDIA,当前最新版本是375.39
检查是否启用成功,终端输入nvidia-smi
2 sudo sh cuda_8.0.27_linux.run
这一步在询问是否安装该包提供的NVIDIA驱动时No,其他都选择yes
3 环境变量配置,编辑/etc/profile or ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
(记得source一下)source /etc/profile 或者 source ~/.bashrc
4 sudo ldconfig
5 默认会把nvidia的例子解压到主文件夹下面
终端输入cd NVIDIA_CUDA-8.0_Samples
make
此时NVIDIA_CUDA-8.0_Samples目录下多了一个bin文件夹
6 测试
cd NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
./deviceQuery
此时看到./deviceQuery Starting...和一些具体信息,就表示cuda安装成功
说明:安装完cuda后,在安装路径下会有一个cuda文件夹,一个cuda-8.0文件夹,可以把cuda文件夹当做是一个备份
二、cudnn
解压下载的cudnn,然后拷贝文件:
sudo cp cudnn-8.0-linux-x64-v5.0/cuda/include/cudnn.h /usr/local/cuda-8.0/include
sudo cp cudnn-8.0-linux-x64-v5.0/cuda/lib64/lib* /usr/local/cuda-8.0/lib64
符号链接文件重新建立
sudo ln -sf /usr/local/cuda-8.0/lib64/libcudnn.so.5.1.10 /usr/local/cuda-8.0/lib64/libcudnn.so.5
sudo ln -sf /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/cuda-8.0/lib64/libcudnn.so
sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
说明:安装完cuda和cudnn后,需要安装与NVIDIA相关联的一个库 :sudo apt-get install libcupti-dev
三、安装Tensorflow
1 安装依赖sudo apt-get install python-pip python-dev
2 tensorflow1.1版本还需要的依赖要求如下:
numpy>=1.11.0
six>=1.10.0
protobuf>=3.2.0
werkzeug>=0.11.10
html5lib==0.9999999
markdown==2.2.0
bleach==1.5.0
wheel>=0.26
mock>=2.0.2
scipy>=0.15.1
把下载的tensorflow_gpu-1.1.0rc1-cp27-none-linux_x86_64.whl文件放在主文件夹下面,然后
sudo pip install tensorflow_gpu-1.1.0rc1-cp27-none-linux_x86_64.whl
会联网自动下载上述相关依赖包,网络不好的时候会安装失败,多试几次!或者自己提前手动安装好依赖包
四、 安装完成测试代码如下,输出Hello, TensorFlow!
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
五 跑代码过程中的错误
1、config.py 修改data_path、output_path
修改:
data_path = "/home/zhb/GalaxyGAN_python/images_blur"
output_path = "/home/zhb/GalaxyGAN_python/train_result"
2、model.py
错误提示:
d1 = tf.concat(3, [tf.nn.dropout(batch_norm(d1, "d1"), 0.5), e7])
_AssertCompatible(dtype.name, repr(mismatch), type(mismatch).__name__))
TypeError: Expected int32, got list containing Tensors of type '_Message' instead.
修改:
d1 = tf.concat([tf.nn.dropout(batch_norm(d1, "d1"), 0.5), e7],3),将下面几行类似错误继续改过来;
第29行将前面两个参数移到后面去,与上述错误一致。
3、model.py
错误提示:
pos_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(pos, tf.ones_like(pos)))
"named arguments (labels=..., logits=..., ...)" % name)
ValueError: Only call `sigmoid_cross_entropy_with_logits` with named arguments (labels=..., logits=..., ...)
修改:
pos_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=pos, logits=tf.ones_like(pos)))
4.cudnn5.0不兼容
错误提示:
E tensorflow/stream_executor/cuda/cuda_dnn.cc:352] Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5110 (compatibility version 5100). If using a binary install, upgrade your CuDNN library to match. If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.
F tensorflow/core/kernels/conv_ops.cc:665] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)
修改:安装cudnn5.1覆盖5.0。步骤参照二
5.图片拼接:
错误提示:
train.py (line 79)
image = np.concatenate((gen_img, cond), axis=1).astype(np.int)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
原因:gen_img, cond这两张图的高度不一致,无法进行拼接。
修改:调用resize函数改变gen_img, cond这两张图中任意一张图片的高度,使其与另外一张图片高度一致。
注:2和3都是由于tensorflow版本的问题,其API被改动。
安装准备:下载好三个文件cuda_8.0.27_linux.run、cudnn-8.0-linux-x64-v5.1.10、tensorflow_gpu-1.1.0rc1-cp27-none-linux_x86_64.whl
一、安装cuda
1 sudo apt-get update
然后在软件和更新->附加驱动,选择NVIDIA,当前最新版本是375.39
检查是否启用成功,终端输入nvidia-smi
2 sudo sh cuda_8.0.27_linux.run
这一步在询问是否安装该包提供的NVIDIA驱动时No,其他都选择yes
3 环境变量配置,编辑/etc/profile or ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
(记得source一下)source /etc/profile 或者 source ~/.bashrc
4 sudo ldconfig
5 默认会把nvidia的例子解压到主文件夹下面
终端输入cd NVIDIA_CUDA-8.0_Samples
make
此时NVIDIA_CUDA-8.0_Samples目录下多了一个bin文件夹
6 测试
cd NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
./deviceQuery
此时看到./deviceQuery Starting...和一些具体信息,就表示cuda安装成功
说明:安装完cuda后,在安装路径下会有一个cuda文件夹,一个cuda-8.0文件夹,可以把cuda文件夹当做是一个备份
二、cudnn
解压下载的cudnn,然后拷贝文件:
sudo cp cudnn-8.0-linux-x64-v5.0/cuda/include/cudnn.h /usr/local/cuda-8.0/include
sudo cp cudnn-8.0-linux-x64-v5.0/cuda/lib64/lib* /usr/local/cuda-8.0/lib64
符号链接文件重新建立
sudo ln -sf /usr/local/cuda-8.0/lib64/libcudnn.so.5.1.10 /usr/local/cuda-8.0/lib64/libcudnn.so.5
sudo ln -sf /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/cuda-8.0/lib64/libcudnn.so
sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
说明:安装完cuda和cudnn后,需要安装与NVIDIA相关联的一个库 :sudo apt-get install libcupti-dev
三、安装Tensorflow
1 安装依赖sudo apt-get install python-pip python-dev
2 tensorflow1.1版本还需要的依赖要求如下:
numpy>=1.11.0
six>=1.10.0
protobuf>=3.2.0
werkzeug>=0.11.10
html5lib==0.9999999
markdown==2.2.0
bleach==1.5.0
wheel>=0.26
mock>=2.0.2
scipy>=0.15.1
把下载的tensorflow_gpu-1.1.0rc1-cp27-none-linux_x86_64.whl文件放在主文件夹下面,然后
sudo pip install tensorflow_gpu-1.1.0rc1-cp27-none-linux_x86_64.whl
会联网自动下载上述相关依赖包,网络不好的时候会安装失败,多试几次!或者自己提前手动安装好依赖包
四、 安装完成测试代码如下,输出Hello, TensorFlow!
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
五 跑代码过程中的错误
1、config.py 修改data_path、output_path
修改:
data_path = "/home/zhb/GalaxyGAN_python/images_blur"
output_path = "/home/zhb/GalaxyGAN_python/train_result"
2、model.py
错误提示:
d1 = tf.concat(3, [tf.nn.dropout(batch_norm(d1, "d1"), 0.5), e7])
_AssertCompatible(dtype.name, repr(mismatch), type(mismatch).__name__))
TypeError: Expected int32, got list containing Tensors of type '_Message' instead.
修改:
d1 = tf.concat([tf.nn.dropout(batch_norm(d1, "d1"), 0.5), e7],3),将下面几行类似错误继续改过来;
第29行将前面两个参数移到后面去,与上述错误一致。
3、model.py
错误提示:
pos_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(pos, tf.ones_like(pos)))
"named arguments (labels=..., logits=..., ...)" % name)
ValueError: Only call `sigmoid_cross_entropy_with_logits` with named arguments (labels=..., logits=..., ...)
修改:
pos_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=pos, logits=tf.ones_like(pos)))
4.cudnn5.0不兼容
错误提示:
E tensorflow/stream_executor/cuda/cuda_dnn.cc:352] Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled with 5110 (compatibility version 5100). If using a binary install, upgrade your CuDNN library to match. If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.
F tensorflow/core/kernels/conv_ops.cc:665] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)
修改:安装cudnn5.1覆盖5.0。步骤参照二
5.图片拼接:
错误提示:
train.py (line 79)
image = np.concatenate((gen_img, cond), axis=1).astype(np.int)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
原因:gen_img, cond这两张图的高度不一致,无法进行拼接。
修改:调用resize函数改变gen_img, cond这两张图中任意一张图片的高度,使其与另外一张图片高度一致。
注:2和3都是由于tensorflow版本的问题,其API被改动。