系統配置:
Ubuntu14.04(x64)
CUDA8.0
cudnn-8.0-linux-x64-v5.1.tgz(Tensorflow依賴)
Anaconda
1. Torch安裝
Torch是深度學習一個非常好的框架,使用人也特別多,之前一直使用caffe進行實驗,最近一個實驗需要在Torch下面跑,所以借此機會安裝一下torch。
Torch的官方文檔已經說的非常詳細,安裝可以直接按照官方文檔進行,官方文檔戳我。
首先從github中down下來torch,放在~/torch文件夾下面:
git clone https://github.com/torch/distro.git ~/torch --recursive cd ~/torch; bash install-deps; ./install.sh
在安裝過程中,可能會出現權限問題,如果不行可以直接在命令前加入sudo 來使用管理員權限來進行操作。
在安裝過程中,Torch安裝程序已經自動將所需的PATH等環境變量寫入環境變量配置文件中,我們需要做的就是將新的環境變量執行,使其生效。
# On Linux with bash source ~/.bashrc # On Linux with zsh source ~/.zshrc # On OSX or in Linux with none of the above. source ~/.profile
如果沒有出現問題,那么Torch已經安裝成功。
Torch 的使用和python 非常類似,在命令行中輸入 th ,則會出現下面信息:

此時,Torch已經成功安裝。
2. Tensorflow安裝
Tensorflow安裝官網已經很完善,直接參考官網教程。
因為系統已經安裝Torch和caffe,為了不使得自己的環境變量混亂,推薦使用anaconda安裝Tensorflow,方便管理,快捷。
Tensorflow-gpu1.2.1
1. 安裝Cuda
首先下載Cuda8.0,然后進入下載目錄,執行下列命令,即可安裝Cuda
安裝完成后,配置環境變量,在home下的.bashrc中加入
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export CUDA_HOME=/usr/local/cuda:$CUDA_HOME
2. 安裝Cudnn
Cuda8.0支持Cudnn v5.0和v5.1,但是在安裝tensorflow之后測試其示例代碼mnist時,提示該代碼基於Cudnn v5.1生成,因此我又改成了v5.1。
下載Cudnn v5.1,進入下載目錄,執行下列命令:
tar xvzf cudnn-8.0-Linux-x64-v5.1.tgz sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn.so* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn.so*
上面第2、3行就是把Cudnn的頭文件和庫文件復制到Cuda路徑下的include和lib目錄。
3.使用Anaconda安裝tensorflow
首先新建一個conda環境,命名為tensorflow
conda create -n tensorflow Python=2.7
然后激活該環境並在該環境下安裝tensorflow
source activate tensorflow
由於使用conda安裝的tensorflow,所以我們使用pip安裝,
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp27-none-linux_x86_64.whl pip install –ignore-installed –upgrade $TF_BINARY_URL
如此,便完成GPU版本的tensorflow安裝。使用完畢后,需要關閉tensorflow環境
source deactivate
可以簡單測試一下tensorflow是否安裝成功
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))
測試mnist簡單實驗。
由於使用anaconda安裝的tensorflow並沒我model,所以需要從github上面git下來model文件夾。
cd /home/startag/anaconda/envs/tensorflow git clone https://github.com/tensorflow/models.git
然后跑MNIST程序測試tensorflow性能:
cd /anaconda/envs/tensorflow/models/tutorials/image/mnist
python convolutional.py
輸出實驗結果:
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 2017-05-27 11:02:25.851275: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-27 11:02:25.851296: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-27 11:02:25.851301: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations. 2017-05-27 11:02:25.851304: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations. 2017-05-27 11:02:25.851306: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations. 2017-05-27 11:02:25.945195: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:901] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2017-05-27 11:02:25.945405: I tensorflow/core/common_runtime/gpu/gpu_device.cc:887] Found device 0 with properties: name: GeForce GTX TITAN X major: 5 minor: 2 memoryClockRate (GHz) 1.076 pciBusID 0000:01:00.0 Total memory: 11.91GiB Free memory: 429.00MiB 2017-05-27 11:02:25.945418: I tensorflow/core/common_runtime/gpu/gpu_device.cc:908] DMA: 0 2017-05-27 11:02:25.945421: I tensorflow/core/common_runtime/gpu/gpu_device.cc:918] 0: Y 2017-05-27 11:02:25.945427: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX TITAN X, pci bus id: 0000:01:00.0) Initialized! Step 0 (epoch 0.00), 13.7 ms Minibatch loss: 8.334, learning rate: 0.010000 Minibatch error: 85.9% Validation error: 84.6%
參考:Ubuntu16.04lts使用Anaconda安裝tensorflow並配置GPU
至此,Caffe升級工作,Torch,Tensorflow安裝工作,歷時3天終於完成。
期間踩坑無數,終於安裝好了所需環境,希望后續實驗可以順利開展,取得好的實驗結果。
3. Sublime配置tensorflow環境
在安裝好tensorflow環境之后,已可以成功直接從terminal中使用tensorflow,但是在編寫代碼過程中,需要使用編輯器支持tensorflow的語法以及一些函數,這時就需要對sublime進行配置,使得sublime可以識別tensorflow的環境以及相關配置。
第一步:
安裝anacoda編譯器,使用sublime的package control管理器,安裝anacoda編譯器(ctrl+shift+p);
然后在Preferences——>Package Settings中找到Anaconda,然后選擇User-settings選項,將以下配置信息放到配置文件中:
{ "python_interpreter": "/home/startag/anaconda/bin/python", "suppress_word_completions":true, "suppress_explicit_completions":true, "complete_parameters":true, "anaconda_linting": false }

然后就可以正常import tensorflow啦。
4. 錯誤處理
1. 在使用tensorflow時候提示錯誤如下:
from google.protobuf import symbol_database as _symbol_database ImportError: cannot import name symbol_database
這是因為在安裝tensorflow時使用的是anaconda環境配置,將tensorflow使用conda命令單獨創建了一個環境變量,在這個環境變量中並未能找到合適的protobuf進行編譯。
解決方法:
sudo apt-get remove python-protobuf
這個是移除使用apt-get安裝的protobuf,以免造成對protobuf的影響。
如果這個方法不奏效,那么使用下面的命令對protobuf進行升級,升級命令為:
sudo pip install --upgrade protobuf
該命令會將protobuf安裝到系統自帶的python2.7環境中。
需要開啟tensorflow環境,即切換到anaconda環境中進行安裝,方可對anaconda中的protobuf進行升級,命令為:
source activate tensorflow #開啟tensorflow環境
使用pip對protobuf進行升級:
pip install --ignore-installed --upgrade protobuf
tips:
在使用anaconda時候,可以使用pip來對已經安裝的包package進行管理和查看,以判別安裝的package的版本是否正確:
$ pip show protobuf Name: protobuf Version: 3.3.0 Summary: Protocol Buffers Home-page: https://developers.google.com/protocol-buffers/ Author: protobuf@googlegroups.com Author-email: protobuf@googlegroups.com License: 3-Clause BSD License Location: /home/startag/anaconda/lib/python2.7/site-packages Requires: six, setuptools
關於anaconda的使用可參考: Anaconda多環境多版本python配置指導
Anaconda使用總結
在Ubuntu環境下配置TensorFlow
2. 在anaconda環境下import cv2提示錯誤
這是因為在默認python環境中安裝的opencv,anaconda並不能找打其位置,需要在anaconda中明確,使用pip重新安裝,安裝命令為:
pip install opencv-python
參考地址:OpenCV - cannot find module cv2
