《深度學習之圖像識別:核心技術與案例實戰》 ——2 深度學習優化基礎
第2章? 深度學習優化基礎
在第1章中初步介紹了神經網絡的發展歷史,基于BP的全連接神經網絡的優缺點及卷積神經網絡(CNN)的基本結構。卷積神經網絡可用于一維時間序列的處理,也可以用于二維(如圖像)序列的處理,相比于普通的神經網絡,CNN將傳統的矩陣乘法改為卷積運算,也是其名字的由來。
本章將從以下兩個方面展開介紹。
* 2.1節將介紹深度學習的幾種主流開源框架的特點及其性能對比。
* 2.2節將介紹深度學習中的優化方法,如正則化等可以防止過擬,是一種有助于提高算法泛化能力的方法。
本章旨在讓大家對深度卷積神經網絡有一個較為全面的認識,以便為后續章節的學習打下基礎。
2.1? 深度學習主流開源框架
所謂工欲善其事,必先利其器。深度學習的快速發展及在工業界和學術界的迅速流行離不開3個要素:數據、硬件和框架。
深度學習框架是深度學習的工具,簡單來說就是庫,例如Caffe、TensorFlow等。深度學習框架的出現,降低了深度學習入門的門檻,開發者不需要進行底層的編碼,可以在高層進行配置。目前已有大量深度學習框架被推出,免費提供給開發者學習、使用。
本節將對當前的深度學習開源框架做概述性的介紹,首先給出幾種常用框架的參數對比。
如表2.1所示為當前常用框架的幾類使用數據對比,如框架的發布時間與維護機構,框架的底層語言及所支持的語言接口等。
沒有什么框架是完美的,不同的框架適用的領域也不完全一致,所以如何選擇合適的框架也是一個需要探索的過程。總體而言,深度學習框架提供的深度學習組件對于通用的算法非常容易上手。
表2.1? 深度學習主流框架參數對比
2.1.1? Caffe簡介
Caffe是基于C++語言及CUDA開發的框架,支持MATLAB、Python接口和命令行,可直接在GPU與CPU中進行切換,訓練效率有保障,在工業中應用較為廣泛。
在Caffe中,網絡層通過C++定義,網絡配置使用Protobuf定義,可以較方便地進行深度網絡的訓練與測試。Caffe官方提供了大量實例,它的訓練過程、梯度下降算法等模塊都已被封裝,開發者學習prototxt語法后,基本能自己構造深度卷積神經網絡。Caffe的代碼易懂、好理解、高效、實用、上手簡單,比較成熟和完善,實現基礎算法方便快捷,適合工業快速應用與部署。
Caffe通過blob以四維數組的方式存儲和傳遞數據。blob提供了一個統一的內存接口,用于批量圖像(或其他數據)的操作與參數更新。Models是以Google Protocol Buffers的方式存儲在磁盤上,大型數據存儲在LevelDB數據庫中。
同時,Caffe還提供了一套完整的層類型。一個層(Layer)是一個神經網絡層的本質,它采用一個或多個blob作為輸入,并產生一個或多個blob作為輸出。Caffe保留所有的有向無環層圖,確保正確地進行前向傳播和反向傳播,Caffe是一個典型的端到端的機器學習系統。每一個Caffe網絡都開始于數據層,結束于損失函數層。通過一個單一的開關,使其網絡運行在CPU或GPU上。
Caffe相對于Tensorflow等使用pip一鍵安裝的方式來說,編譯安裝稍微麻煩一些,但其實很簡單,我們以Ubuntu 16.04為例,官網的安裝腳本足夠用了,它有一些依賴庫。裝完之后,去Git上復制代碼(網址為https://github.com/BVLC/caffe),修改Makefile.config就可以進行編譯安裝了。對于GPU,還需要安裝CUDA及NVIDIA驅動。
圖像識別 圖像識別服務 Image 圖像識別服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。