1. 程式人生 > >keras深度學習框架

keras深度學習框架

 實驗室新裝了keras,發現keras預設後端是tensorflow,想換回theano,看了官方文件也沒搞懂,最終搞定,很簡單。

Keras是一個簡約,高度模組化的神經網路庫。採用Python / Theano開發

使用Keras如果你需要一個深度學習庫:

  • 可以很容易和快速實現原型(通過總模組化,極簡主義,和可擴充套件性)
  • 同時支援卷積網路(vision)和複發性的網路(序列資料)。以及兩者的組合。
  • 無縫地執行在CPU和GPU上。

映象的容器中使用:

1.keras.json: 在/root/.keras/裡面;

 2.後端切換:修改keras.json檔案,th=theano, tf=tensorflow

keras後端theano中使用GPU的方法:


來自官方的介紹How do I use keras with gpu

If you are running on the TensorFlow backend, your code will automatically run on GPU if any available GPU is detected. If you are running on the Theano backend, you can use one of the following methods:

Method 1: use Theano flags.

THEANO_FLAGS=device=gpu,floatX=float32python

my_keras_script.py
The name ‘gpu’ might have to be changed depending on your device’s identifier (e.g. gpu0, gpu1, etc).

Method 2: set up your .theanorc: Instructions (修改.theanorc.txt檔案,如果沒有該檔案,可以自己新建該檔案,放到/root/.theano/下面)

sudo vim ~/.theanorc

add these content
[global]
device=gpu
floatX=float32

Method 3: manually set theano.config.device, theano.config.floatX at the beginning of your code:

import theano
theano.config.device = ‘gpu’
theano.config.floatX = ‘float32’

.theanorc.txt檔案:

[global]  
device=gpu  
floatX=float32 

[dnn.conv]
algo_bwd_filter = deterministic
algo_bwd_data = deterministic

[cuda]
root=/usr/local/cuda-8.0

[lib]
cnmem=0.3

[nvcc]
fastmath = True
optimizer_including=cudnn

備註 :

1.nvidia-smi 檢視gpu的使用情況,GPU-Util:gpu使用率

2.檢視theano的版本號:

python

import theano

theano.__version__

3. THEANO_FLAGS=device=gpu,floatX=float32 python train_model_zj.py  ./data  

跑GPU,GPU一直跑不通,原因theano的版本太低,

sudo pip install -U --pre theano

4. 報這個問題:Using gpu device 0: GeForce GTX 1080 (CNMeM is disabled, cuDNN 5105) 可以忽略

5.程序號: 數字PID,是英文ProcessIDentifier的縮寫

強制終止程序:kill -9 程序號

ps -aux  //顯示所有包含其他使用者的程序

USER 

  PID  %CPU %MEM VSZ  RSS TTY   STAT   START TIME COMMAND
smmsp 3521  0.0   0.7    65561616    ?      Ss     20:40 0:00sendmail: Queue [email protected]:00:00 f

名稱:ps
使用許可權:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
引數:
ps 的引數非常多, 在此僅列出幾個常用的引數並大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程

au(x) 輸出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程擁有者
PID: pid
%CPU: 佔用的 CPU 使用率
%MEM: 佔用的記憶體使用率
VSZ: 佔用的虛擬記憶體大小
RSS: 佔用的記憶體大小
TTY: 終端的次要裝置號碼 (minor device number of tty)
STAT: 該行程的狀態:
D: 不可中斷的靜止
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
L: 有記憶體分頁分配並鎖在記憶體內
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令