【TensorFlow】01 TensorFlow簡介與Python基礎
1241
2025-04-06
1.3 關于MXNet
在眾多主流的深度學習框架中,很難說哪一個在各方面都占有絕對優勢,但是假如你選擇MXNet進行深度學習算法的開發和部署,相信你一定能體會到其運行速度快、省顯存等優點。另外隨著MXNet的不斷推廣,相關的學習資料也越來越多,社區越來越壯大,這對于MXNet而言是非常利好的。
MXNet從開源起就將命令式編程和符號式編程無縫銜接在一起,比如在設計神經網絡結構時采用符號式編程得到計算圖,然后根據計算圖進行一系列的優化從而提高性能,而在訓練模型過程中涉及的邏輯控制操作則可以通過命令式編程的方式實現。因此MXNet在靈活和高效之間取得了非常好的平衡,這使得MXNet不僅適合于學術界研究試錯,也適合工業界進行線上部署。事實上,成功很少會有捷徑,MXNet雖然是2015年年底開源,但在開源之前其實經歷了較長的開發期,屬于典型的厚積薄發。
1.3.1 MXNet的發展歷程
在MXNet誕生之前,已有一個深度學習框架cxxnet,該框架比較成熟,不僅可擴展性強,而且擁有統一的并行計算接口;另外還有一個接口Minerva,這是一個比較靈活的類似于NumPy的計算接口,當時還在CMU讀博的李沐就和這兩個項目的開發者一起將二者結合在一起,最終誕生了MXNet,MXNet這個名字也是前面兩個項目名字的組合。
2015年9月,cxxnet正式遷移至MXNet,這也標志著MXNet正式開源。作為cxxnet的優化版本,MXNet在實現了cxxnet所有功能的基礎上加入了更多新的功能,比如NDArray模塊和Symbol模塊,同時其速度更快,顯存占用更少。另外MXNet提供了更加靈活且直觀的接口,更加便于用戶使用,詳細內容可以參考MXNet官方文檔。該文檔中提供了詳細的接口介紹和使用方法,文檔地址:https://mxnet.incubator.apache.org/,同時MXnet官方開源了代碼,感興趣的讀者可以訪問:https://github.com/apache/incubator-mxnet了解。
2016年年底,Amazon宣布正式將MXNet作為官方使用的深度學習框架。當時的背景是TensorFlow已經開源了一年左右,普及速度非常快;Caffe作為深度學習框架的元老,積累了非常多的用戶。這兩種深度學習框架對處于快速發展中的MXNet施加了很大的壓力,畢竟那段時間MXNet的開發者們的主要精力還放在開發上,框架推廣上的力度還不夠,因此此時加入Amazon這一事件給了MXNet很大的支持,進一步推動了MXNet后期的快速發展和推廣。
2017年8月,MXNet發布了0.11版本,該版本最大的改進就是發布了動態圖接口Gluon。采用命令式編程的Gluon接口使得網絡結構的設計更加靈活,同時也更便于代碼調試。Gluon和PyTorch擁有許多共同點,比如命令式編程的特點、主要的接口設計等,目前Gluon接口已經成為MXNet框架非常重要的一部分。為了方便讀者交流學習,Gluon官方推出了技術論壇,該技術論壇目前非常活躍,感興趣的讀者可以訪問Gluon官方論壇:https://discuss.gluon.ai/。
2018年5月,MXNet正式推出了專門為計算機視覺任務打造的深度學習工具庫GluonCV,該工具庫提供了包括圖像分類、目標檢測、圖像分割等領域的前沿算法復現模型。GluonCV主要以Gluon接口為例進行實現,而且提供了詳細的復現代碼,從方便讀者研究學習。目前GluonCV庫的代碼已經開源,代碼地址:https://github.com/dmlc/gluon-cv,GluonCV庫官方文檔地址:https://gluon-cv.mxnet.io/。官方文檔中還提供了預訓練模型的下載鏈接、復現代碼的下載鏈接、各種接口介紹和教學的例子,非常便于讀者學習。
2018年10月,MXNet推出GluonCV 0.3.0版本,新版本不僅添加了圖像分類、目標檢測、圖像分割等領域新的算法模型,而且對已有的復現模型也做了優化,使得算法模型在效果上有了進一步的提升。目前GluonCV還在快速發展中,內容也越來越豐富,強烈推薦讀者使用和學習。
2018年11月,MXNet正式推出1.3.1版本,該版本提供了更加完善的接口,考慮到目前GluonCV庫需要1.3.0以上版本的MXNet才能支持,因此本書代碼將基于MXNet 1.3.1版本進行開發。
MXNet主打小巧和靈活,版本更新速度快而且兼容性好,接口方面基本上緊跟前沿的算法,能夠及時實現前沿算法中的自定義操作,并整合到MXNet框架的接口中。比如目標檢測(object detection)算法中比較優秀的SSD,其中關于default boxes的生成和檢測層都有對應的實現,用戶可以直接調用MXNet的指定接口。再比如圖像分割領域的Mask RCNN算法中用到的ROIAlign層在MXNet也有對應的實現。這些都說明MXNet的開發者一直致力于開發和維護MXNet,基本上兩、三個月的時間就會發布新版本,如此活躍的社區必將推動MXNet的快速發展。雖然MXNet發布新版本的節奏較快,但有一個好處在于每次發布的新版本對原有接口的改動非常小,主要是修改bug和增加新的接口,因此這不僅大大降低了代碼維護的成本,還提供了更加豐富的接口選擇。
開發者 深度學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。