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