1. TensorFlow
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,表达了高层次的机器学习计算,大幅简化了第一代系统,并且具备更好的灵活性和可延展性。
TensorFlow一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从电话、单个CPU / GPU到成百上千GPU卡组成的分布式系统。
TensorFlow支持CNN、RNN和LSTM算法,这都是目前在Image,Speech和NLP最流行的深度神经网络模型。
2015年11月5日,Google开源了TensorFlow,按他们自己的说法,tensorflow会“成为机器学习界的安卓”。所以无论如何,这也表达了TensorFlow强大的性能以及应用的广泛性。无论如何,TensorFlow的开源对于学术界以及工业界,都是非常有价值的。
今天,我们就尝试在Ubuntu16.04+GTX1080上配置和使用这个强大的深度学习工具:TensorFlow。
2. 配置
Ubuntu16.04
GTX1080
CUDA8.0
cudnn5.1
TensorFlow
3. 安装
由于电脑的显卡以及CUDA8.0已经配置好,在此不再赘述,可以参考本人的第一篇文章。
3.1 cudnn
TensorFlow需要用到cudnn,cudnn是NVIDIA开发的用于深度神经网络的GPU加速库。下载地址
这里我们下载的是:Download cuDNN v5.1 (August 10, 2016), for CUDA 8.0,因为我们的显卡是GTX1080以及CUDA8.0,你也可以根据你的显卡来选择你需要的版本。
下载完后解压:
cp cudnn-8.0-linux-x64-v5.1.solitairetheme8 cudnn-8.0-linux-x64-v5.1.tgz
tar -xvf cudnn-8.0-linux-x64-v5.1.tgz
以下的操作需要管理员权限。
复制头文件:
cd cuda/include
sudo cp cudnn.h /usr/local/cuda-8.0/include
再将lib64目录下的动态文件进行复制和链接:
cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
ln -s libcudnn.so.5.0.5 libcudnn.so.5
ln -s libcudnn.so.5 libcudnn.so
然后设置环境变量和动态链接库,在命令行输入:
gedit /etc/profile
在打开的文件末尾加入:
export PATH = /usr/local/cuda8.0/bin:$PATH
保存之后,创建链接文件:
vim /etc/ld.so.conf.d/cuda.conf
按下键盘i进行编辑,输入链接库位置:
/usr/local/cuda/lib64
然后保存退出,并在终端输入:
ldconfig
bug
yue@akayue:~$ sudo vim /etc/ld.so.conf.d/cuda.conf
[sudo] password for yue:
yue@akayue:~$ ldconfig
/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 is not a symbolic link
/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
1.Permission denied 就用sudo ldconfig
2.libcudnn.so.7 is not a symbolic link
https://blog.csdn.net/weixin_32820767/article/details/81382877
libcudnn.so.7是一个文件,它本应是一个软连接。于是创建软接连:Create the new link manually:
yue@akayue:~$ ls -lh /usr/local/cuda/lib64/libcudnn.so.7
-rwxr-xr-x 1 root root 273M 8月 18 10:55 /usr/local/cuda/lib64/libcudnn.so.7
yue@akayue:~$ sudo ln -sf /usr/local/cuda/lib64/libcudnn.so.7.0.4 /usr/local/cuda/lib64/libcudnn.so.7
看ldconfig
~$ sudo ldconfig -v
查到
libcudnn.so.7 -> libcudnn.so.7.0.3
这个时候的文件
yue@akayue:~$ ls -lh /usr/local/cuda/lib64/libcudnn.so.7
lrwxrwxrwx 1 root root 17 8月 18 11:10 /usr/local/cuda/lib64/libcudnn.so.7 -> libcudnn.so.7.0.3
3.2 TensorFLow
TensorFlow的安装在官网介绍的很详细。
一共提供了四种安装方式:
- Virtualenv installation
- Anaconda installation
- Docker installation
- Installing from sources
应为本机一直使用的是Anaconda,使用起来比较方便,在这四种安装方式中相比起来也比较简单,因此选择了Anaconda installation,你也可以根据你的喜好和个人情况来选择安装。
创建tensorflow的conda环境:
conda create -n tensorflow python=2.7
使用刚刚创建的tensorflow环境:
source activate tensorflow
(tensorflow)$ # Your prompt should change
如果使用CPU版本:
# Linux/Mac OS X, Python 2.7/3.4/3.5, CPU only:
(tensorflow)$ conda install -c conda-forge tensorflow
我们使用的是Linux64bit,Python2.7的GPU版本,输入:
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc0-cp27-none-linux_x86_64.whl
安装:
# Python 2
(tensorflow)$ pip install --ignore-installed --upgrade $TF_BINARY_URL
当你使用完TensorFlow时,关闭tensorflow环境:
(tensorflow)$ source deactivate
$ # Your prompt should change back
你可以通过命令行来测试是否安装成功:
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>
然后你可以使用TensorFlow来训练模型:
$ cd tensorflow/models/image/mnist
$ python convolutional.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
Initialized!
Epoch 0.00
Minibatch loss: 12.054, learning rate: 0.010000
Minibatch error: 90.6%
Validation error: 84.6%
Epoch 0.12
Minibatch loss: 3.285, learning rate: 0.010000
Minibatch error: 6.2%
Validation error: 7.0%
...
...
如果你的输出结果如上所示,则代表安装是正确的。
如果安装不成功,还有另外一种方式。
去下载地址,在下面的Installation中选择Linux GPU: Python 2进行下载,你也可以根据你的系统、Python的版本以及GPU或者CPU选择相应的进行下载。下载完以后,将下载好的tensorflow_gpu-0.12.0rc0-cp27-none-linux_x86_64 .whl文件放到你的anaconda2/lib/python2.7/site-packages/ 里面,然后打开终端:
pip install
tensorflow_gpu-0.12.0rc0-cp27-none-linux_x86_64 .whl
也可以完成TensorFlow的安装。
4. 利用TensorFlow实现图像风格转换
第一步:neural-style下载
第二步:下载vgg19
第三步:把vgg19的mat文件放到neural-style的文件夹根目录下。
第四步:在neural-style的文件夹的路径下输入:
python neural_style.py --content ./example/1-content.jpg --styles ./example/1-style.jpg --output ./example/1-output.jpg
你也可以根据你的需求,将–content后面的图片换成你想要转换的图片,–styles后换成你想要转换的风格图片,–output后改成输出的图片名称就可以了。
could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
sudo rm -rf ~/.nv
训练完成,来看看效果吧!
怎么样,你也来试试吧!