2017年1月13日 星期五

[Tensorflow] 什麼是 Placeholder ?

之前有點不太清楚 Placeholder 到底在做什麼

下面是我查到的結果,詳細的可以

A placeholder is simply a variable that we will assign data to at a later date --- Placeholders - Learning Tensorflow.com

簡單來講就是一個之後可以儲存值的變數 (想像一下 向量 或是 Tensor )

x = tf.placeholder("float", 3)

First, we import tensorflow as normal. Then we create a placeholder called x, i.e. a place in memory where we will store value later on. The 3 on this line denotes that we will store three values in this placeholder.

所以,等等 x 可以被儲存3個浮點數進去

當然,也可以不指定 x 的儲存數量,例如以下

x = tf.placeholder("float", None)

2017年1月11日 星期三

[Linux] 工具Terminator:如何將 Command window 畫面多重分割 + 同時輸入

感謝培任大大介紹好東西


情境題:如果需要"同時"安裝同一個軟體到多台電腦上面該怎麽做 ?

How do I run the same linux command in more than one tab/shell simultaneously?

有一個工具叫做 Terminator (魔鬼終結者!?)

它能夠將螢幕畫面切分成為許多不同的子畫面(還可以大小不一)

安裝好之後,在cmd裡面輸入指令

terminator

就可以使用囉


如果有自己常用的設定可以寫好一個腳本程式

需要使用的時候,呼叫它即可

同時,它有一個重要的功能是 Broadcast(廣播)

它能夠讓多個終端機畫面輸入相同的指令

我們可以設定所有的終端機畫面,或是自己定義的終端機群組,輸入相同的指令



以下是常用的指令:

Alt + A (All)        -> 將所有分割畫面 group 起來(但是未必是同個group)

Alt + G (Group)   -> 將自己定義的群組分割畫面 group 起來

Windows符號/Fn鍵 + g ->  將所有分割畫面 group 起來 (歸類在同個叫作"全部"的group )

Alt + O (Off)       -> 取消廣播

Ctrl + D               -> 關閉當下的終端機分頁

Alt +  ↑ /↓ /←/→ -> 在不同的畫面間切換(相同標籤)

Ctrl + PageUp/PageDown  -> 在不同的標籤間切換(最上面一排的標籤)

其他的快捷鍵 Keybindings


2017年1月8日 星期日

NVIDIA GPU - Compute processes: not supported

在這篇討論區的文章(Compute processes: not supported)中

提到使用 nvidia-smi 指令的時候,最下面顯示的 GPU Process 竟然沒有出現處理中的程序

到底是怎麽回事呢?

例如我在跑 Tensorflow 需要使用的範例的時候,也是顯示一樣的畫面


這篇 討論文章有提到一些端倪

很有可能是最新的驅動程式不支援過舊版本的GPU卡

所以完全讀不到任何正在處理中的程序

程序有可能正在執行,也有佔用了GPU的記憶體,但是沒辦法被讀到

所以才顯示 Not Supported

2017年1月5日 星期四

[Tensorflow] 安裝 Tensorflow r 0.12 + CUDA 8.0 + cudnn v 5.1

[前情提要]

重新安裝回去 Tensorflow  r 0.12 + CUDA 8.0 + CuDNN v 5.1 是因為遇到了下面的問題

原本的環境是 Tensorflow r 0.10 + CUDA 7.5(最穩定) + CuDNN v 5.1.3 + Ubuntu 16.04 LTS

執行 NVIDIA 官網上面訓練Google inception v3 的影像分類器之後得到以下的相同問題
(NVIDIA- SPEED UP TRAINING WITH GPU-ACCELERATED TENSORFLOW)


發現上面遇到的問題必須使用較新的Tensorflow r 0.11 版本

運行之後,發現貌似 r 0.11 只支援 CUDA 8.0
# 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.0-cp27-none-linux_x86_64.whl

---- 官方 r 0.11 的安裝


後來查證了 wiki 上 CUDA 的條目資訊

發現 CUDA 8.0 是能夠支援我現在所使用的GPU ( NVIDIA GeForce GTX 660 )

因此,為了執行後續其他的專案

保險起見,我還是先把 Tensorflow  r 0.12 + CUDA 8.0 + CuDNN v5 安裝起來

[前置作業]
解除安裝

解除安裝舊的 Tensorflow、CUDA toolkit、CuDNN

可以參考這篇 Removing nvidia cuda toolkit and installing new one

移除資料夾的方法可以參考這篇 rm – 刪除檔案及目錄指令
(特別注意:使用 rm 的時候請注意刪除的是什麼)

安裝

CUDA toolkit 8.0

先下載下來 CUDA toolkit 8.0

載完之後會有教使用者如何安裝的指令

Installation Instructions:
Run `sudo sh cuda_8.0.44_linux.run`
Follow the command-line prompts

CuDNN v5

一樣也是下載下來,再將 CuDNN 中的資料拷貝到 CUDA 的路徑中

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

環境變數設定
按照以下的文字輸入進 .bashrc 檔(依據自己安裝的路徑進行調整)

export CUDA_HOME=/usr/local/cuda-8.0

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:/usr/local/cuda/extras/CUPTI/lib64"

PATH="/usr/local/cuda-8.0/bin:$PATH";export PATH

設定完之後,請在 bash shell 中鍵入

source .bashrc

讓bashrc中的路徑設定進行更新

[配置]
進入tensorflow所在的資料夾,執行configure檔,例如以下的範例

$ ./configurePlease specify the location of python. [Default is /usr/bin/python]:

Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N No Google Cloud Platform support will be enabled for TensorFlow

Do you wish to build TensorFlow with GPU support? [y/N] y GPU support will be enabled for TensorFlow Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:

Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 8.0

Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:

Please specify the cuDNN version you want to use. [Leave empty to use system default]: 5

Please specify the location where cuDNN 5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:

Please specify a list of comma-separated Cuda compute capabilities you want to build with. You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus. Please note that each additional compute capability significantly increases your build time and binary size. [Default is: "3.5,5.2"]: 3.0

Setting up Cuda includeSetting up Cuda libSetting up Cuda binSetting up Cuda nvvmSetting up CUPTI includeSetting up CUPTI lib64Configuration finished

[常見錯誤]

心理準備

基本上安裝的時候會出現很多問題,Google 是你/妳最忠實的朋友,有問題就問它!


路徑位置

圖片檔經過轉換之後的TFRecord file 還有 訓練模型的 路徑位置請務必確認


GPU 記憶體大小

由於 GPU 內部的記憶體大小有限,所以一次處理過多的圖片會有記憶體爆炸的問題

所以可以先從較低的 batch_size 往上調,目前手邊的機器使用的是NVIDIA GTX 660

內部記憶體只有2G,我就遇到 ResourceExhaustError 這個錯誤,後來就從 batch_size  = 1開始往上調



2016年12月28日 星期三

[Tensorflow] GPU版本安裝硬體需求

[ 這篇文是寫給GPU版本的使用者,CPU版本的使用者可以忽略 ]

NVIDIA 官網上面提供的 GPU版本 TensorFlow 安裝教學文件

提醒各位,如果是在 Linux 環境底下,務必事先確保正在安裝的版本是可以支援的

不然會面臨 重新解除安裝,再重新安裝 的窘境

對於 Linux 新手來說,如果沒有具備經驗的人從旁指導,所消耗的時間是巨大的...

以下是相關安裝所需要具備的條件

The GPU-enabled version of TensorFlow has the following requirements:
  • 64-bit Linux
  • Python 2.7
  • NVIDIA CUDA® 7.5 (CUDA 8.0 required for Pascal GPUs)
  • NVIDIA cuDNN v4.0 (minimum) or v5.1 (recommended)

You will also need an NVIDIA GPU supporting compute capability 3.0 or higher.
- See more at: http://www.nvidia.com/object/gpu-accelerated-applications-tensorflow-installation.html#sthash.TfIK4hr5.dpuf

 別忘了,要使用支援運算能力達到 3.0 以上的 GPU 卡

還有下載下來的 Tensorflow 版本需要能支援以上條件 NVIDIA 驅動程式以及開發套件

2016年12月24日 星期六

GPU 使用率檢查

最近需要使用 GPU 版本的 Tensorflow 來進行訓練

但是我們該如何檢查 GPU 使用的狀況呢?

以下是 lab 的政岳學長以及我從網路上找到的資訊


在cmd 視窗中執行

nvidia-smi

(更多關於nvidia-smi的資訊可以看這個網頁的介紹)

就能夠出現以下圖一中關於GPU的資訊畫面

圖一、GPU 程序 [原圖來源]

如果有GPU程序在執行的話,在圖一下方中 processes 那欄會出現

第幾個 GPU 上面跑著的程序,它的 Process ID(PID) 是多少

還有 GPU 記憶體使用率是多少

2016年12月23日 星期五

[Tensorfow] 簡易影像分類器 訓練教學 - TensorFlow For Poets

TensorFlow For Poets 是一篇訓練分類兩種不同種花的教學文

按照步驟輸入指令,就能夠順利安裝 Docker

接著再按照步驟一步一步的訓練完分類器之後

在Docker的環境裡面執行以下的指令

python /tf_files/label_images.py /tf_files/flower_photos/花的資料夾/某張花的影像檔名.副檔名

cmd就會把兩個分類結果選項以及分數給秀出來,就如同下面這樣

daisy (score = 0.99936)
roses (score = 0.00064)

從分數的高低,可以知道我剛剛用來測試的影像是 Daisy(雛菊)


/* 載入prettify的autoloader */ /* 載入JQuery */