MXNet 粗糙的使用指南

MXNet 粗糙的使用指南

寫於2020年3月24日,最新的CUDA版本爲10.2


MXNet簡介

MXNet是一個(跟TF與Torch相比特別小衆的)多平臺神經網絡框架。

優點:靈活,多平臺,可移植性強。工業界常用框架。

缺點複雜,難以入門,基本沒有教材。只能依靠代碼來學習代碼。

 

框架介紹

MXNet現在存在兩種界面:symbol與gluon。

Symbol的設計思路與TF1.x版本的思路相似:靜態圖,手動指定模型,符號式編程。而Gluon則大大參考了Troch與Kreas:動態圖,依靠PY中的類進行模型構建,指令式編程。當然,爲了解決動態圖的效率問題,Gluon可以一鍵動態轉靜態,這使得Gluon的效率大大提升?(基於現在MXNet對動態圖的優化,這個差距好像只有2%)

 

唯一指定參考文檔

唯一指定文檔:http://mxnet.incubator.apache.org/api/python/docs/tutorials/

很不幸,這是僅此一份的可以使用的MXNet全面資料,而且沒有任何入門指南。

這裏是一些有關MXNet書籍的評價:

《動手學深度學習》:對於深度學習的各個應用講解的非常全面,但是太過依賴d2lzh庫了。作爲唯一一本MXNet入門書籍,是MXNet的教科書。缺點在於數據的預處理與特殊數據的讀取完全沒有涉及;自定義模塊的gluon方案也沒有講解。事實上,gluon的自定義做的非常差,這方面基本要依靠symbol來完成。

《MXNet深度學習實戰》:重點在於symbol模型的講解。作爲MXNet的老界面,symbol還在被廣泛使用當中。如上文所說,gluon還是一個不太完善的界面,很多部分要依靠symbol來補足。

 

模型下載

如果你的電腦的cuda是10.0版本的:使用pip mxnet-cu100

如果你的電腦的cuda是10.1版本的:使用pip mxnet-cu101

10.x版本以後的同理

如果你的電腦的cuda是9.0版本的:使用pip mxnet-cu90

如果你的電腦的cuda是9.2版本的:使用pip mxnet-cu92

x.y版本的同理

不要忘記安裝cuda以及cuda toolkit。不要試圖用conda安裝mxnet。Pip加速可以使用清華源。

 

數據保存與讀入

數據的保存方面對應的是這個API:mxnet.recordio.MXIndexedRecordIO

數據的讀入方面MXNet提供了兩個API:

(1)ImageRecordIter

(2)ImageDetRecordIter

其中,第一個對應目標識別,第二個對應目標檢測,具體用法百度即可。但是都不是很好用,事實上你可能必須要自己寫一個數據迭代器。如果要自己設計數據迭代器,建議原生numpy+py多線程。

此外,作爲讀取文件數據的CSVIter事實上已被棄用,不要使用它。如果你需要讀取文件數據,請自己寫一個數據迭代器:mxnet.io.io.DataIter是一個很不錯的基類。

 

模型構建與訓練

百度就完事了。這方面三家都大差不差。此外要注意·Gluon是沒有fit這種函數的。雖然有現成的訓練器,但是解決器還是需要自己動手寫的。

超出Gluon能力的自定義層使用symbol的這個API:CustomOP。比較複雜,需要Gluon模型靜態化後才能對接。需要注意的是,在Gluon模型中使用的CustomOP,無法對numpy做後臺運算,可能會對性能造成不可知的影響。

注:Gluon版本的fit函數叫Estimator。現在還在contrib模塊裏趴着,甚至沒有被編譯到pip直接可供下載的庫裏。不知道猴年馬月才能用上這個東西。’

 

遷移學習相關

MXNet本身沒有任何保存的模型。但是有一個附加庫叫做GluonCV,神奇的GluonCV!

GluonCV需要單獨安裝,裏面主要是一些訓練好的模型和一些特殊的損失函數,包括Focalloss,YOLOloss,SSD中用的IOUloss。這些可以極大的方便一些模型的實現。

 

總結

MXNet,不是很好用,但是安利大家都來試一試:畢竟他還在以飛快的速度更新,畢竟是第一個以國人爲主力的神經網絡框架,畢竟是我第一次見到竟然是以中文爲主的官方討論區。

 

一些鏈接

MXNet官網:http://mxnet.incubator.apache.org/

MXNet文檔:http://mxnet.incubator.apache.org/api/python/docs/tutorials/

MXNet下載方式:http://mxnet.incubator.apache.org/get_started

GluonCV官網:https://gluon-cv.mxnet.io/

GluonCV文檔:https://gluon-cv.mxnet.io/api/

Pip清華源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章