初学者如何选出最适合自己深度学习框架?
無論是對于深度學習相關專業的初學者,還是已經在企業和組織中從事工業場景應用和研發的開發者來說,選擇一個適合自己,適合業務場景需求的深度學習框架顯得尤為重要。下邊對現有深度框架做一個全面的闡述及解答。
目前,國內外有哪些主流的深度學習框架?分別有什么優缺點?
TensorFlow:谷歌大廠出品,社區資源豐富,用戶群體廣泛。如果你的業務是實現一個比較成熟的應用場景,選擇 TensorFlow 是個不錯的選擇,畢竟大部分坑前人已經踩過了。如果你還是一名初學者,想要去實現全新的算法,那要慎重選擇 TensorFlow,因其發展時間較久,代碼庫龐大,想要真正看懂它的代碼會是一個不小的挑戰。
PaddlePaddle:百度出品,跟 TF 類似,PaddlePaddle 也是在百度內部實際應用的工業框架。值得一提的是,PaddlePaddle 為大量工業級模型提供官方支持;大規模分布式訓練技術能力強,支持大規模稠密參數和稀疏參數場景的并行訓練;基于其中文文檔友好、簡單易上手的特點,社區活躍度不斷提高。本土開發者中文交流非常方便。PaddlePaddle 已經升級為全面的深度學習開發套件,除了核心框架,還開放了 VisualDL、PARL、AutoDL、EasyDL、AI Studio 等一整套的深度學習工具組件和服務平臺,更好地滿足不同層次的深度學習開發者的開發需求。18 年百度加大了生態投入,在工業制造、農林領域有不少案例,對于想要落地應用場景,特別是針對中文語言處理的場景和大規模推薦場景,PaddlePaddle 或許是個不錯的選擇。
PyTorch+Caffe2:臉書出品。PyTorch 前身是 Torch(一個基于 Lua 語言的深度學習庫)。PyTorch 靈活性相比 TensorFlow 大大增強,支持動態構圖,開發者可以隨時改變神經網絡的結構。PyTorch 今年因其易用性表現突出,越來越受到學術界的青睞。如果你是一名初學者,想要去復現前沿的算法,推薦使用 PyTorch。如果你是工業場景開發者,最好先搜一搜是否已經有使用 PyTorch 的成功落地案例。因為在運算效率、工業部署上,PyTorch 還不算成熟。Caffe2為生產環境設計,提供在各種平臺(包括移動設備)的運行時。Caffe2 意在彌補 Pytorch 在生產環境的不足,目前還沒有看到太多開發者反饋 Caffe2 的工業表現,需要更多時間驗證。
MxNet:已被亞馬遜?(Amazon) 選為?AWS 上的深度學習框架,支持動態圖計算。優勢是高效小巧,更適合自定義需求高的公司和研究者。如果你的工作需要對框架進行修改時,改 MxNet 要比改 TF 高效多了。MXNet 的用戶相比其他框架并不算太多,有少量擁戴者。MXNet 在文檔質量方便經常被詬病,新手還需要多磨合一下。
Keras:是一個用于快速構建深度學習原型的高層神經網絡庫,Keras 由純 Python 編寫而成,并基于 Tensorflow、Theano 以及 CNTK 后端。Keras 隱藏了大部分的內部運算,對于新手來說非常友好。如果想要快速入門,建議可以選擇 Keras。但真的想成為深度學習大拿,還是要手動從零開始寫一個神經網絡的代碼,否則容易依賴于 Keras 的易使用性而忽略底層原理。
XDL:阿里出品。X-Deep Learning (XDL) 是針對特定工業級場景(比如廣告)深度學習問題的解決方案,而不是與其他框架并列的底層框架。實際上,XDL 采用橋接的方式支持使用 TensorFlow 和 MXNet 作為單節點的計算后端。對于已經使用 TensorFlow、MXNet 的開發者來說,如果需要在大規模稀疏場景應用可以選擇 XDL 試試, XDL 依賴于阿里提供特定的部署環境,對非阿里系用戶不是很人性化。
不同學習階段、不同崗位的開發者,面對不同的業務場景需求應該選擇什么深度學習框架?選擇和衡量的標準是什么?
不同類型的用戶,選擇和衡量的標準會有一定差異。選擇框架通常要考慮易用性、性能、社區、平臺支持等問題。初學者應該考慮容易上手的框架。偏研究性的開發者,一般選擇易用而且有領先的模型基線的框架。偏工業應用的開發者可以考慮使用穩定性高、性能好的框架。比較高階的用戶,往往需要同時掌握多個框架。最新的開源算法可能會基于某個框架,掌握多個框架可以更快復現前沿成果。同時不同框架在不同模型上有性能差異,掌握多個框架也可以選擇在某個場景下最適合的框架。
在選擇深度學習框架時有哪些經驗可以分享?需要考慮哪些因素?
開發者通常用深度學習框架組建網絡,去解決實際企業級業務中的具體問題,比如:詞法分析、機器翻譯等。選擇框架時通常需要關注以下一些因素:
(1)框架是否已經官方支持了當前最好的算法,比如中文詞法分析任務。
(2)框架是否高效。同樣的算法用不同框架實現,訓練速度更快,意味著更少的線下資源,更快的迭代速度;預測速度更快,意味著實際部署時可以為企業節省大量的機器資源,也具有更高的響應速度。
(3)框架的接口是否容易使用。
掌握一個深度學習框架,開發者需要做哪些準備?
在開發者已經學習 Python 程序開發和深度學習基礎知識的前提下,掌握一個深度學習框架,開發者需要了解框架的基本原理,學習并掌握框架的基本概念和用法。
(1)通常可以先從官方文檔開始,通過大致瀏覽官方文檔對框架基本概念和用法有一個大致的了解。
(2)另外可以結合官方提供的快速入門例子,在自己的機器上安裝并練習使用。
(3)然后可以再從官方的模型庫里面挑選一些算法,進行學習參考。
(4)結合自己具體任務組建網絡,查看 API 接口文檔,解決實際任務。
深度學習框架能“包治百病”嗎?是否適用于所有應用場景需求?
需要提醒大家的是,深度學習框架不能包至百病,深度學習框架能夠解決的是適合使用深度學習技術的應用場景。
深度學習(DL)是機器學習(ML)的一個分支,也是當下最流行的機器學習方法,雖然近幾年在圖像、語音、自然語言處理等應用方向,深度學習技術都取得了突破性的進展,但是我們依然不應該神話深度學習,認為深度學習無所不能。
適合掌握深度學習的任務應具備這樣一些特點:
(1)具備大量樣本數據。如果樣本數據難以獲取或者數量太少,我們認為就不適合深度學習技術解決。
(2)樣本數據對場景的覆蓋度足夠完善。深度學習模型的效果完全依賴樣本數據表現,如果出現樣本數據外的情況,模型的推廣性會變差。
(3)結果對可解釋性的要求不高。如果應用場景不僅要機器能夠完成某項任務,還需對完成過程有明確的可解釋性,這樣的場景就不那么適合深度學習。
?
聯盟有話說:
目前比較主流的兩大深度學習框架是TensorFlow和PyTorch,TensorFlow在工業界用的比較多,PyTorch比較靈活,相對在學業界用的比較多。不過,聯盟覺得只要選擇一個適合自己的,踏實用心學習就好了,不用考慮其他很多不必考慮的問題,何必給自己增添煩惱呢。
對于有能力或者高端開發者,還是要對流行框架都掌握喲,這樣才能跟隨AI前沿!
總結
以上是生活随笔為你收集整理的初学者如何选出最适合自己深度学习框架?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习框架之个人见解
- 下一篇: 深度学习框架不能“包治百病”,开发者如何