- Web安全之深度學習實戰
- 劉焱
- 239字
- 2019-01-03 15:37:24
第1章 打造深度學習工具箱
在本系列圖書的第一本《Web安全之機器學習入門》中,我們以常見安全問題為背景介紹了常見的機器學習算法,主要以KNN、SVM、樸素貝葉斯等淺層學習算法為主。以Scikit-Learn為代表的機器學習開發庫幫助我們可以很便捷地在單機環境下驗證我們的想法。近幾年深度學習發展迅速,以TensorFlow為代表的一批優秀的深度學習開發庫大大降低了大家學習使用深度學習技術的門檻。作為本書的第1章,本章將幫助大家打造自己的深度學習工具箱,并結合實際例子介紹TensorFlow、TFLearn、PaddlePaddle以及Karas的使用方法。
本章代碼請參考本書配套GitHub中的tools.py。
1.1 TensorFlow
TensorFlow是谷歌的第二代人工智能學習系統,其名稱來源于本身的運行原理。Tensor意味著N維數組,Flow意味著基于數據流圖的計算,TensorFlow為Tensor從流圖的一端流動到另一端計算過程。所以也可以把TensorFlow當做將復雜的數據結構傳輸至人工智能神經網中進行分析和處理的系統。
TensorFlow可用于語音識別或圖像識別等多項機器深度學習領域,是對2011年開發的深度學習基礎架構DistBelief進行了各方面的改進,它可在小到一部智能手機、大到數千臺數據中心服務器的各種設備上運行。
1.1.1 安裝
TensorFlow支持非常豐富的安裝方式。
1. Ubuntu/Linux。
# 僅使用CPU的版本 $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow- 0.5.0-cp27-none-linux_x86_64.whl # 開啟GPU支持的版本 (安裝該版本的前提是已經安裝了CUDA sdk) $ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow- 0.5.0-cp27-none-linux_x86_64.whl
2. Mac OS X。
在Mac OS X系統上,我們推薦先安裝homebrew,然后執行brew install python,以便能夠使用homebrew中的Python安裝TensorFlow:
# 當前版本只支持CPU $ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0- py2-none-any.whl
3.基于Docker的安裝。
該命令將啟動一個已經安裝好TensorFlow及相關依賴的容器:
$ docker run -it b.gcr.io/tensorflow/tensorflow
4.基于VirtualEnv的安裝。
官方文檔推薦使用VirtualEnv創建一個隔離的容器來安裝TensorFlow,這是可選的,但是這樣做能使排查安裝問題變得更容易。VirtualEnv通過創建獨立Python開發環境的工具,來解決依賴、版本以及間接權限問題。比如,一個項目依賴Django1.3,而當前全局開發環境為Django1.7,版本跨度過大,導致的不兼容使項目無法正常運行,使用VirtualEnv可以解決這些問題。
首先,安裝所有必備工具:
# 在Linux上: $ sudo apt-get install python-pip python-dev python-virtualenv # 在Mac上: # 如果還沒有安裝pip $ sudo easy_install pip $ sudo pip install --upgrade virtualenv
接下來,建立一個全新的VirtualEnv環境。為了將環境建在~/tensorflow目錄下,執行如下代碼:
$ virtualenv --system-site-packages ~/tensorflow $ cd ~/tensorflow
然后,激活VirtualEnv:
$ source bin/activate # 如果使用bash $ source bin/activate.csh # 如果使用csh (tensorflow)$ # 終端提示符應該發生變化
在VirtualEnv內,安裝TensorFlow:
(tensorflow)$ pip install --upgrade <$url_to_binary.whl>
接下來,使用類似命令運行TensorFlow程序:
(tensorflow)$ cd tensorflow/models/image/mnist (tensorflow)$ python convolutional.py # 當使用完TensorFlow (tensorflow)$ deactivate
1.1.2 使用舉例
TensorFlow的API使用起來比較繁瑣,通常直接使用針對其API的高層封裝TFLearn即可,具體實現請參考下節TFLearn的使用舉例。