DeepLearning入门笔记(一),准备工作与注意事项

妖精的绣舞 提交于 2019-12-30 01:54:00

本文记录了安装theano、keras、tensorflow以及运行tutorial程序时遇到的一些问题,供后人参考。

实验机器:联想笔记本,i7-6700HQ,GTX960M,16G内存,SSD硬盘,64位Ubuntu 16.04 LTS

备注:

  1. 不推荐windows,会遇到各种不兼容问题。Ubuntu最好使用16.04这个版本,低版本的Ubuntu可能出现显卡驱动不支持等问题。

  2. Ubuntu16.04 装好后,注意将系统默认的显卡驱动改为nvidia的驱动,并更新显卡驱动,我用的是version 367.48。
  3. TensorFlow的gpu版本安装比较麻烦,由于CUDA版本兼容问题,如果使用当前最新的CUDA 8.0,则需要自己重新编译TensorFlow源代码,然后本地安装。

  4. 建议先安装Theano和Keras,流程相对容易,早点跑出“hello world”,增强信心。

安装Theano作为后端的Keras:

详细流程可参见 

http://keras-cn.readthedocs.io/en/latest/getting_started/keras_linux/

 

流程中安装CUDA和cuDNN时,应选择CUDA 8.0和cuDNN 5.0,安装完毕后,一定要记得重启电脑!否则运行tutorial代码会提示no CUDA-capable device is detected

按照教程运行mnist_mlp.py,会有如下提示,说明GPU加速成功,每次Epoch需要1s,如果是CPU版本的训练,则一次Epoch需要70s左右。

Using Theano backend. 
Using gpu device 0: GeForce GTX 960M (CNMeM is enabled with initial size: 80.0% of memory, cuDNN 5005)

 

 

安装Tensorflow:


在官方教程里,有编译好的whl给我们直接安装(通过pip install),比如我的机器就选下面这个

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Install from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0rc1-cp27-none-linux_x86_64.whl

但实际操作后会遇到报错,具体报错信息我没保存,今天反思了一下,估计是因为我的CUDA安装路径不是TensorFlow默认的"/usr/local/cuda",而是"/usr/local/cuda-8.0",可能把文件名改一下就好了的。当时我实际的解决方案是git clone TensorFlow源代码,然后自己配置环境并重新编译。。。

编译TensorFlow也比较麻烦,最靠谱的安装教程应该是这个

http://textminingonline.com/dive-into-tensorflow-part-iii-gtx-1080-ubuntu16-04-cuda8-0-cudnn5-0-tensorflow

首先需要安装JDK,虽然Ubuntu自带了OpenJDK,但还是按照网上教程,卸载了OpenJDK,装了Oracle JDK并配置好环境变量。然后就是安装Google内部使用的build工具Bazel,中间应该是有报错的,我记得是提示有依赖包没有安装,google一下可以找到解决方案,然后成功安装好bazel之后,就可以进行编译了。

编译之前,要先git clone TensorFlow,这里我直接下载了master版本,所以后面发现版本太新,无法与keras兼容。。不过先暂时这样吧。下载好之后,要cd到TensorFlow源代码主目录,然后./configure配置环境,这里面最重要的就是设置好CUDA和cuDNN的版本和路径,注意TensorFlow默认的CUDA路径是“/usr/local/cuda”,而CUDA 8.0的默认安装路径是“/usr/local/cuda-8.0”,所以配置的时候一定要手动修改一下。

配置完毕之后,按照教程用bazel编译即可。编译大概要十多分钟,结束之后得到whl文件,然后用pip install,大功告成。此时再在python里import tensorflow,可以看到以下信息

>>> import tensorflow
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcurand.so.8.0 locally

 

用TensorFlow跑MNIST数据集:

 

这个算是我们的hello world吧。按照官方教程,只需要下面两条命令就可以跑起来并得到不错的分类结果

$ cd tensorflow/models/image/mnist
$ python convolutional.py

但实际运行的时候,会发现terminal没有任何输出,原因是程序需要先下载MNIST数据集,数据源在国外,不翻墙的话很慢。用gedit打开convolutional.py,可以找到数据源的地址,以及下载存放的路径,我们可以翻墙自己下载数据,然后根据需要修改一下

源代码里的文件路径即可。如果有GPU加速,会看到以下信息:

I tensorflow/core/common_runtime/gpu/gpu_device.cc:944] Found device 0 with properties: 
name: GeForce GTX 960M
major: 5 minor: 0 memoryClockRate (GHz) 1.176
pciBusID 0000:01:00.0
Total memory: 3.95GiB
Free memory: 3.57GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:965] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1034] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960M, pci bus id: 0000:01:00.0)
Initialized!
Step 0 (epoch 0.00), 7.8 ms
Minibatch loss: 12.054, learning rate: 0.010000
Minibatch error: 90.6%
Validation error: 84.6%
Step 100 (epoch 0.12), 16.6 ms
Minibatch loss: 3.297, learning rate: 0.010000
Minibatch error: 6.2%
Validation error: 7.5%
Step 200 (epoch 0.23), 16.5 ms
Minibatch loss: 3.459, learning rate: 0.010000
Minibatch error: 12.5%
Validation error: 3.9%.......(后面的print信息被我省略掉了)

 

用TensorFlow跑word2vec:


官方教程在这里

https://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html#vector-representations-of-words

我们运行 tensorflow/examples/tutorials/word2vec/word2vec_basic.py ,它还是要先自动下载数据,如果很慢的话,同样可以自己下载搞定。然后训练完毕之后会用TSNE对词向量做可视化,这里需要再安装几个matplotlib,sklearn,scipy这三个python包,注意matplotlib还需要安装Tkinter,可以用下面的命令

apt-get install python-tk

最后训练完的词向量如图

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!