MXNet深度學習實戰》">《MXNet深度學習實戰》
727
2025-03-31
1.2 深度學習框架
目前大部分深度學習框架都已開源,不僅提供了多種多樣的接口和不同語言的API,而且擁有詳細的文檔和活躍的社區,因此設計網絡更加靈活和高效。另外,幾乎所有的深度學習框架都支持利用GPU訓練模型,甚至在單機多卡和分布式訓練方面都有很好的支持,因此訓練模型的時間也大大縮短了。深度學習框架的這些優點讓其在開源之初就大受歡迎,同時大大加速了學術界和工業界對深度學習算法的研究,所以最近幾年各領域的算法模型如雨后春筍般不斷刷新各種指標。
目前主流的深度學習框架不到10個,而且大部分框架都由大公司的工程師在維護,代碼質量非常高,選擇一個合適的框架不僅能加快算法的優化產出,還能提高線上部署的效率。當然不同高校實驗室或者企業團隊所用的深度學習框架都不大一樣,不過你不用擔心現在所用的框架在以后的工作中用不到,畢竟各框架的設計理念都有許多相似之處,但我建議你至少要深入了解其中一個深度學習框架,多動手寫代碼,讀一讀該框架的源碼,以求能夠靈活使用該框架實現自己的想法,當然,如果你能對開源社區有一定的貢獻并一起推動該框架發展那自然是再好不過了。雖然目前主流的深度學習框架有好幾個,不過按照框架的設計方式大致可以將其分為命令式編程(imperative programming)和符號式編程(symbolic programming or declarative programming)兩類。
命令式編程(或稱動態圖)并不是新奇的概念,而且很有可能你從一開始寫代碼的時候用的就是這種編程方式。假設你用Python來編程,當你已經為變量a、b、c賦值,然后要計算[(a+b)*c]-d的結果時,你可以先計算a+b得到結果,假設用變量ab表示,接著再計算ab和c的乘積,假設用變量abc表示,最后再用abc減去d得到最終的結果,這里每一步操作的結果都是可見的??梢钥闯觯钍骄幊谭浅l`活,當你不僅想得到最終的結果還想得到運算的中間結果時,比如你想要獲取中間步驟a+b的結果,那么你可以讀取變量ab來得到。因此命令式編程并不是新概念,而是我們最熟悉的那種編程方式。
符號式編程(或稱靜態圖)是指先設計好計算圖,然后初始化輸入數據,最后將數據輸入計算圖得到最后的結果。再以前面列舉的計算[(a+b)*c]-d為例,對于符號式編程而言,當你為a、b、c、d賦值后,將這4個值輸入你定義好的計算圖[(a+b)*c]-d就可以直接得到結果。與命令式編程不同的是,在符號式編程中,要想獲取中間結果幾乎是不可能的,比如(a+b)的值,你能得到的只是最終的結果??梢钥闯?,符號式編程雖然不靈活,但是非常高效,為什么這么說呢?因為符號式編程在設計好計算圖之后就可以根據該計算圖高效利用存儲空間,一些變量的存儲空間能復用則復用。
那么深度學習框架為什么會有命令式編程和符號式編程這兩種方式呢?主要是希望能在靈活和高效之間取得平衡。深度學習框架有一定的入門門檻,命令式編程可以讓這個門檻變得很低,因為這就是我們最熟悉的編程方式。但我們都知道在GPU上訓練深度學習模型時需要用到顯存,如果是命令式編程,則每運行網絡的一層就會分配顯存中的一塊空間來保存特征圖或其他參數,部分空間的使用頻率非常低,這樣就會造成大量的顯存占用。如果采用符號式編程,那么當你設計好整個計算圖之后,框架會根據你的計算圖分配顯存,這個步驟會共享部分空間從而減小整個網絡所占用的顯存。因此符號式編程雖然不如命令式編程靈活,但能高效利用顯存。
總結起來,命令式編程注重靈活,符號式編程注重高效。本書主要通過深度學習框架MXNet來介紹如何實戰深度學習算法,該框架融合了命令式編程和符號式編程,在靈活和高效之間取得了非常好的平衡。正如前文所述,各深度學習框架之間有很多相似性,當你深入了解其中一種深度學習框架之后基本上就能舉一反三,因此如果你現在還在猶豫學習哪個深度學習框架,那么不妨跟著本書從MXNet開始,我相信這會是一個美好的開始。
1.2.1 MXNet
MXNet是亞馬遜(Amazon)官方維護的深度學習框架。MXNet官方文檔地址:https://mxnet.apache.org/,GitHub地址:https://github.com/apache/incubator-mxnet。
MXNet的前身是cxxnet。2015年年底,cxxnet正式遷移至MXNet,并在2016年年底成為Amazon的官方深度學習框架。MXNet采用的是命令式編程和符號式編程混合的方式,具有省顯存、運行速度快等特點,訓練效率非常高。2017年下半年推出的Gluon接口使得MXNet在命令式編程上更進一步,網絡結構的構建更加靈活,同時混合編程的方式也使得Gluon接口兼顧了高效和靈活。2018年5月,MXNet正式推出了專門為計算機視覺任務打造的深度學習工具庫GluonCV,該工具庫提供了包括圖像分類、目標檢測、圖像分割等領域的前沿算法復現模型和詳細的復現代碼,同時還提供了常用的公開數據集、模型的調用接口,既方便學術界研究創新,也能加快工業界落地算法。
深度學習 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。