自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2020年深度學(xué)習(xí)框架對比速讀

原創(chuàng)
人工智能 深度學(xué)習(xí)
本文主要是為部分初學(xué)者提供建議,框架并無“最好”與“最壞”之分,選擇最終歸結(jié)于您的技術(shù)背景、需求和期望。

  眾所周知,在機(jī)器學(xué)習(xí)框架領(lǐng)域,PyTorch、TensorFlow已分別成為目前學(xué)術(shù)界和工業(yè)界使用最廣泛的兩大實(shí)力玩家,而緊隨其后的Keras、MXNet等框架也由于其自身的獨(dú)特性受到開發(fā)者的喜愛。本文主要是為部分初學(xué)者提供建議,框架并無“最好”與“最壞”之分,選擇最終歸結(jié)于您的技術(shù)背景、需求和期望。

???

  TensorFlow:出身豪門的工業(yè)界霸主

  TensorFlow于2015年11月面世,基于Apache License 2.0協(xié)議發(fā)布,由Google Brain團(tuán)隊(duì)研發(fā)。到目前為止也是github上熱度最高、使用人數(shù)最多的深度學(xué)習(xí)框架,業(yè)界很多招聘要求中也提到了它。2019年3月推出TensorFlow2.0 版本,整體與1.0版本相比發(fā)生了較大的變化。

  TensorFlow能有現(xiàn)在的地位,主因有二:一是“背靠大樹好乘涼”,Google幾乎在所有應(yīng)用程序中都使用TensorFlow來實(shí)現(xiàn)機(jī)器學(xué)習(xí)。得益于Google在深度學(xué)習(xí)領(lǐng)域的影響力和強(qiáng)大的推廣能力,TensorFlow一經(jīng)推出關(guān)注度就居高不下;二是由于其本身設(shè)計(jì)宏大,不僅可以為深度學(xué)習(xí)提供強(qiáng)力支持,靈活的數(shù)值計(jì)算核心也能廣泛應(yīng)用于其他涉及大量數(shù)學(xué)運(yùn)算的科學(xué)領(lǐng)域。

  優(yōu)勢歸因:

  支持python、JavaScript、C ++、Java和Go,C#和Julia等多種編程語言;

  靈活的架構(gòu)支持多GPU、分布式訓(xùn)練,跨平臺運(yùn)行能力強(qiáng);

  自帶TensorBoard組件,能可視化計(jì)算圖,便于讓用戶實(shí)時監(jiān)控觀察訓(xùn)練過程;

  官方文檔非常詳盡,可查詢資料眾多;

  社區(qū)龐大,大量開發(fā)者活躍于此。

  踩坑預(yù)警:

  從框架本身的語言設(shè)計(jì)來看,入門難度較大。加之部分自創(chuàng)的抽象概念,提高了學(xué)習(xí)門檻;

  系統(tǒng)設(shè)計(jì)過于復(fù)雜,代碼總量逾100萬行,學(xué)習(xí)者如果希望了解TF的底層運(yùn)行機(jī)制,無疑漫長而艱辛;

  文檔和教程雖多,但缺乏條理,新舊版本割裂,對初學(xué)者來說很難找到一個循序漸進(jìn)的入口;

  接口迭代頻繁,且版本間不兼容問題足以令人頭禿。尤其在TF2發(fā)布后,不少TF1的用戶發(fā)現(xiàn)很多開源代碼無法在新版本上運(yùn)行;

  在移動平臺和嵌入式領(lǐng)域中TensorFlow過于“臃腫”,計(jì)算速度也不盡如人意(Google針對這一問題又開發(fā)了TensorFlow Lite)。

  小結(jié)TensorFlow發(fā)展到如今,多少有點(diǎn)“始于宏大,囿于宏大”的意味。雖然吐槽者甚多,但也側(cè)面說明了使用者眾多。況且在工業(yè)界TensorFlow依然是深度學(xué)習(xí)框架中無可爭議的標(biāo)桿,加之谷歌的支持,投入時間學(xué)習(xí)算是一項(xiàng)相當(dāng)不錯的選擇。

  項(xiàng)目地址:https://github.com/tensorflow/tensorflow

  Keras:用戶友好的極簡主義擁躉

  如果你已經(jīng)掌握了Python并準(zhǔn)備開啟深度學(xué)習(xí)之旅,Keras可能會是最易上手的一個工具。嚴(yán)格來說,與其說Keras是一個深度學(xué)習(xí)框架,不如說它是一個由Python編寫的開源神經(jīng)網(wǎng)絡(luò)庫,一個構(gòu)建于第三方框架之上的深度學(xué)習(xí)接口,一種高級API。Keras本是為支持快速實(shí)驗(yàn)而生,可以基于以TensorFlow為代表的多種深度學(xué)習(xí)框架快速建模,將你的想法迅速輸出為實(shí)驗(yàn)結(jié)果,其設(shè)計(jì)充分體現(xiàn)了“用戶友好”這一特性。

  為了提供簡潔一致的API,盡可能為用戶減少重復(fù)造輪子的顧慮,Keras做了層層封裝。這種高度封裝一方面使用戶的學(xué)習(xí)變得容易,但另一方面也缺乏靈活性,經(jīng)常導(dǎo)致用戶在獲取底層數(shù)據(jù)信息時過于困難,改寫現(xiàn)有的神經(jīng)網(wǎng)絡(luò)層也十分復(fù)雜。此外,由于不少Bug隱匿于封裝中,這也使Keras運(yùn)行速度相對緩慢。

  優(yōu)勢歸因:

  用戶友好,代碼可讀,句法明晰,高度模塊化,便于上手;

  提供簡潔的API,減少一般應(yīng)用下用戶的工作量;

  支持實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò),或二者的結(jié)合;

  相同的代碼可以在CPU或GPU上無縫切換運(yùn)行;

  官方文檔詳盡易懂,用戶社區(qū)龐大。

  踩坑預(yù)警:

  高度集成,缺少靈活性,深入學(xué)習(xí)時容易遇到瓶頸;

  過度封裝在一定程度上增加了調(diào)試難度;

  對DL的入門者來說,容易因Keras 的易用性而忽略底層原理。

  小結(jié):在眾多的深度學(xué)習(xí)框架中,Keras可以說將“極簡主義”發(fā)揮到了極致。簡潔的代碼、簡潔的API、簡潔的模型構(gòu)建和導(dǎo)出,這些都讓深度學(xué)習(xí)看上去似乎不那么“高不可攀”了。不過對于初學(xué)者而言,Keras到底適不適合推薦則是見仁見智。支持者認(rèn)為,Keras最大限度地減少了用戶操作,并使模型非常容易理解,對菜鳥們絕對是很好的敲門磚;反對者認(rèn)為,在使用Keras的大多數(shù)時間里,用戶主要是在調(diào)用接口,很難真正理解到深度學(xué)習(xí)的內(nèi)涵。其過度的封裝容易讓新手陷入似是而非的處境。

  官方網(wǎng)站:https://keras.io/

  MXNet:低調(diào)規(guī)矩的輕量級選手

  MXNet是一個輕量級的深度學(xué)習(xí)庫,在2016年被AWS正式選擇為其云計(jì)算的官方深度學(xué)習(xí)平臺。2017年1月,MXNet項(xiàng)目進(jìn)入Apache基金會,成為Apache的孵化器項(xiàng)目。MXNet以其超強(qiáng)的分布式支持,明顯的內(nèi)存、顯存優(yōu)化為人稱道。同樣的模型,MXNet往往占用更小的內(nèi)存和顯存,因此對資源不夠的朋友來說是一個不錯的選擇。

  作為一個輕巧的框架,MXNet的特點(diǎn)非常鮮明:語言接口非常豐富,包括C++、Python、R語言、Scala、Julia、Matlab和JavaScript;支持多端運(yùn)行,可以運(yùn)行在多CPU、多GPU、集群、服務(wù)器、臺式機(jī)或者移動設(shè)備上;允許用戶混合使用符號編程和命令式編程,最大限度確保深度學(xué)習(xí)框架的靈活性和執(zhí)行效率。

  優(yōu)勢歸因:

  支持多語言接口;

  同時支持符合式和命令式編程,集靈活與效率于一體;

  分布式環(huán)境下擴(kuò)展性能出色,可有效擴(kuò)展到多個GPU和多臺機(jī)器;

  有AWS的平臺支持,云端部署便捷。

  踩坑預(yù)警:

  初期推廣不給力,過于低調(diào)以致整體生態(tài)構(gòu)建相對滯后,用戶社區(qū)活躍度較低;

  教學(xué)文檔不夠系統(tǒng),甚至于只能通過查看源碼來真正理解MXNet接口的用法,學(xué)習(xí)成本較高。

  小結(jié):MXNet自發(fā)行到現(xiàn)在一直比較低調(diào)和小眾。創(chuàng)始人李沐曾提到MXNet發(fā)展早期是“舍推廣保技術(shù)”。雖然性能上也算可圈可點(diǎn),但終究沒有迎來大放異彩的時刻。另外官方文檔的“粗糙”也勸退了相當(dāng)一部分用戶,尤其對從零開始的新手來說,上手難度較高。

  官方網(wǎng)址:https://mxnet.incubator.apache.org/

  PyTorch:以動態(tài)圖崛起的學(xué)術(shù)界寵兒

  PyTorch是基于Torch并由Facebook強(qiáng)力支持的python端的開源深度學(xué)習(xí)庫。它于2017年1月發(fā)布,是近年來最引人關(guān)注的深度學(xué)習(xí)框架之一。2018年Caffe2正式并入PyTorch后,PyTorch的發(fā)展勢頭更呈不可阻擋之勢。因其上手簡單、功能強(qiáng)大,可以非??焖俚仳?yàn)證研究思路而廣受研究人員的青睞。

  有TensorFlow的“宏大藍(lán)圖”在前,PyTorch能如此快速崛起,主要原因在于:支持動態(tài)計(jì)算圖,提供了很好的靈活性;易用性強(qiáng),近乎傻瓜式操作非常親民;有非常詳盡清晰的官方教程,吸引了大量開發(fā)者和研究人員,社區(qū)迅速壯大。目前許多新發(fā)表的論文都采用PyTorch作為論文實(shí)現(xiàn)的工具。如果你是一名科研工作者,PyTorch或許會是你的首選。

  優(yōu)勢歸因:

  簡潔。PyTorch在設(shè)計(jì)上更直觀,追求盡量少的封裝,建模過程透明,代碼易于理解;

  易用。應(yīng)用十分靈活,接口沿用Torch,契合用戶思維,盡可能地讓用戶實(shí)現(xiàn)“所思即所得”,不過多顧慮框架本身的束縛;

  社區(qū)。提供完整的文檔和指南,用戶可以通過全面的教程完成從入門到進(jìn)階,有疑問也可以在社區(qū)中獲得各種及時交流的機(jī)會。

  踩坑預(yù)警

  生產(chǎn)環(huán)境部署仍存在大問題。PyTorch能在學(xué)界一枝獨(dú)秀,主要是因?yàn)椤把芯俊备⒅乜焖賹?shí)現(xiàn)、驗(yàn)證自己的想法,而不太注重部署的問題,一般“怎么快怎么來”。但在業(yè)界,部署的快速和穩(wěn)定是必要的。否則做實(shí)驗(yàn)時節(jié)省下來的時間,都要在生產(chǎn)上線時加倍還回去。

  小結(jié):PyTorch的易用性是毋庸置疑的“王牌”。越來越多的人因?yàn)檫@一點(diǎn)開始學(xué)習(xí)PyTorch,不過其在工業(yè)界的部署問題也不容回避。顯然,當(dāng)你充分了解到這些利弊時,就應(yīng)該明白這些深度學(xué)習(xí)框架都是工具,學(xué)的越多,可選擇的余地越大。

  官方網(wǎng)站:https://pytorch.org/

  國內(nèi)深度學(xué)習(xí)框架自研之路

  2020年上半年,華為Mindspore、曠視MegEngine、騰訊TNN、清華Jittor等數(shù)個國產(chǎn)AI框架漸次宣布開源,討論的熱度一直在持續(xù)。最近一流科技的OneFlow又首創(chuàng)性地引入Actor模型和SBP機(jī)制,以其獨(dú)特設(shè)計(jì)引起關(guān)注。很多人也開始思考:在已有成熟的開源深度學(xué)習(xí)框架并擁有完整生態(tài)的情況下,中國企業(yè)和機(jī)構(gòu)是否有必要再另造一套框架?自研深度學(xué)習(xí)框架的創(chuàng)新空間又有多大?

  近幾年,基礎(chǔ)技術(shù)的“卡脖子”問題逐漸浮出水面。不久前美國政府發(fā)布的“芯片禁令”將華為逼到了非常被動的境地。前事不忘后事之師,中國要想發(fā)展好新一代的人工智能,通過自主研發(fā)來掌握AI底層技術(shù)無疑是未雨綢繆的重要舉措。因此自研深度學(xué)習(xí)框架是非常必要的。不過局中人也都知道要超越那些已有的成熟的框架也是很難的,那么出路何在?

  雖然很多人認(rèn)為深度學(xué)習(xí)框架的融合是時之所趨勢,TensorFlow2.0和PyTorch也的確是越來越像了,但實(shí)際上深度學(xué)習(xí)框架的市場是很大的,用戶需求也是多樣的,這就注定不可能由某個企業(yè)、某個產(chǎn)品壟斷。就像TensorFlow也曾一家獨(dú)大,但PyTorch橫空出世后迅速形成兩強(qiáng)對峙的局面,關(guān)鍵就在于兩者設(shè)計(jì)初衷的差異。TensorFlow面向工業(yè)界,側(cè)重推理,在部署上實(shí)現(xiàn)了工業(yè)級的穩(wěn)定;PyTorch面向?qū)W術(shù)界,側(cè)重訓(xùn)練,足夠簡單易用,能達(dá)成快速實(shí)現(xiàn)和驗(yàn)證。最終兩者在各自面向的領(lǐng)域都確立了王者地位。

  差異化可能將是深度學(xué)習(xí)框架自研之路上的制勝關(guān)鍵。單純依靠模仿的框架肯定是沒有出路的,如何與現(xiàn)存的成熟的深度學(xué)習(xí)框架區(qū)別開來進(jìn)而打造自身亮點(diǎn)是眾多開發(fā)團(tuán)隊(duì)所要考慮的。PaddlePaddle模型庫豐富,MegEngine追求訓(xùn)練推理一體化,Mindspore深耕自動并行的訓(xùn)練能力,OneFlow專注分布式環(huán)境下的性能提升……相比“一枝獨(dú)秀”,“百花齊放”無疑更有利于國內(nèi)深度學(xué)習(xí)框架的長足發(fā)展。

  【結(jié)語】深度學(xué)習(xí)框架作為AI底層工具,對個人而言是進(jìn)入深度學(xué)習(xí)世界的一把鑰匙,掌握深度學(xué)習(xí)框架并不等于理解了深度學(xué)習(xí),要在AI開發(fā)中有所作為,關(guān)鍵還是要真正理解框架背后的技術(shù)、實(shí)踐和生態(tài)。



責(zé)任編輯:張潔 來源: 51CTO
相關(guān)推薦

2019-03-06 09:55:54

Python 開發(fā)編程語言

2017-05-05 10:15:38

深度學(xué)習(xí)框架對比分析

2021-01-07 07:09:13

深度學(xué)習(xí)人工智能AI

2017-03-06 15:25:47

PyTorchMxnet深度學(xué)習(xí)

2017-03-01 13:36:41

TensorFlowTheano框架

2020-02-25 15:04:48

深度學(xué)習(xí)編程人工智能

2017-07-05 14:21:30

框架TensorFlowTheano

2020-05-25 15:54:58

JavaScript框架開發(fā)

2023-05-14 22:00:01

2017-02-21 10:00:44

大數(shù)據(jù)深度學(xué)習(xí)框架對比

2021-11-05 12:59:51

深度學(xué)習(xí)PytorchTenso

2016-12-15 09:44:31

框架Caffe源碼

2020-02-07 22:23:36

網(wǎng)絡(luò)安全IT安全漏洞

2020-03-25 13:59:22

前端開發(fā)編程

2017-01-04 10:47:45

TensorFlow框架Theano

2017-01-06 13:00:44

框架TensorFlowTheano

2020-10-12 08:05:09

機(jī)器學(xué)習(xí)數(shù)據(jù)科學(xué)ML

2022-11-25 07:35:57

PyTorchPython學(xué)習(xí)框架

2023-06-27 16:42:18

Tinygrad深度學(xué)習(xí)工具

2021-11-27 05:03:09

框架深度學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號