Torch,Tensorflow使用: Ubuntu14.04(x64)+ CUDA8.0 安裝 Torch和Tensorflow


系統配置:

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,方便管理,快捷。

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

 


免責聲明!

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



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