DeepLearning入門筆記(一),准備工作與注意事項


本文記錄了安裝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

最后訓練完的詞向量如圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM