真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

TensorFlow與主流深度學(xué)習(xí)框架對(duì)比-創(chuàng)新互聯(lián)

引言:AlphaGo在2017年年初化身Master,在弈城和野狐等平臺(tái)上橫掃中日韓圍棋高手,取得60連勝,未嘗敗績(jī)。AlphaGo背后神秘的推動(dòng)力就是TensorFlow——Google于2015年11月開源的機(jī)器學(xué)習(xí)及深度學(xué)習(xí)框架。
TensorFlow在2015年年底一出現(xiàn)就受到了極大的關(guān)注,在一個(gè)月內(nèi)獲得了GitHub上超過(guò)一萬(wàn)顆星的關(guān)注,目前在所有的機(jī)器學(xué)習(xí)、深度學(xué)習(xí)項(xiàng)目中排名第一,甚至在所有的Python項(xiàng)目中也排名第一。本文將帶我們簡(jiǎn)單了解下TensorFlow,并與其他主流深度學(xué)習(xí)框架進(jìn)行了對(duì)比。
本文選自《TensorFlow實(shí)戰(zhàn)》。

成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、周寧網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為周寧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

TensorFlow

  TensorFlow是相對(duì)高階的機(jī)器學(xué)習(xí)庫(kù),用戶可以方便地用它設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),而不必為了追求高效率的實(shí)現(xiàn)親自寫C++或CUDA代碼。它和Theano一樣都支持自動(dòng)求導(dǎo),用戶不需要再通過(guò)反向傳播求解梯度。其核心代碼和Caffe一樣是用C++編寫的,使用C++簡(jiǎn)化了線上部署的復(fù)雜度,并讓手機(jī)這種內(nèi)存和CPU資源都緊張的設(shè)備可以運(yùn)行復(fù)雜模型(Python則會(huì)比較消耗資源,并且執(zhí)行效率不高)。除了核心代碼的C++接口,TensorFlow還有官方的Python、Go和Java接口,是通過(guò)SWIG(Simplified Wrapper and Interface Generator)實(shí)現(xiàn)的,這樣用戶就可以在一個(gè)硬件配置較好的機(jī)器中用Python進(jìn)行實(shí)驗(yàn),并在資源比較緊張的嵌入式環(huán)境或需要低延遲的環(huán)境中用C++部署模型。SWIG支持給C/C++代碼提供各種語(yǔ)言的接口,因此其他腳本語(yǔ)言的接口未來(lái)也可以通過(guò)SWIG方便地添加。不過(guò)使用Python時(shí)有一個(gè)影響效率的問(wèn)題是,每一個(gè)mini-batch要從Python中feed到網(wǎng)絡(luò)中,這個(gè)過(guò)程在mini-batch的數(shù)據(jù)量很小或者運(yùn)算時(shí)間很短時(shí),可能會(huì)帶來(lái)影響比較大的延遲?,F(xiàn)在TensorFlow還有非官方的Julia、Node.js、R的接口支持。
  TensorFlow也有內(nèi)置的TF.Learn和TF.Slim等上層組件可以幫助快速地設(shè)計(jì)新網(wǎng)絡(luò),并且兼容Scikit-learn estimator接口,可以方便地實(shí)現(xiàn)evaluate、grid search、cross validation等功能。同時(shí)TensorFlow不只局限于神經(jīng)網(wǎng)絡(luò),其數(shù)據(jù)流式圖支持非常自由的算法表達(dá),當(dāng)然也可以輕松實(shí)現(xiàn)深度學(xué)習(xí)以外的機(jī)器學(xué)習(xí)算法。事實(shí)上,只要可以將計(jì)算表示成計(jì)算圖的形式,就可以使用TensorFlow。用戶可以寫內(nèi)層循環(huán)代碼控制計(jì)算圖分支的計(jì)算,TensorFlow會(huì)自動(dòng)將相關(guān)的分支轉(zhuǎn)為子圖并執(zhí)行迭代運(yùn)算。TensorFlow也可以將計(jì)算圖中的各個(gè)節(jié)點(diǎn)分配到不同的設(shè)備執(zhí)行,充分利用硬件資源。定義新的節(jié)點(diǎn)只需要寫一個(gè)Python函數(shù),如果沒(méi)有對(duì)應(yīng)的底層運(yùn)算核,那么可能需要寫C++或者CUDA代碼實(shí)現(xiàn)運(yùn)算操作。
  在數(shù)據(jù)并行模式上,TensorFlow和Parameter Server很像,但TensorFlow有獨(dú)立的Variable node,不像其他框架有一個(gè)全局統(tǒng)一的參數(shù)服務(wù)器,因此參數(shù)同步更自由。TensorFlow和Spark的核心都是一個(gè)數(shù)據(jù)計(jì)算的流式圖,Spark面向的是大規(guī)模的數(shù)據(jù),支持SQL等操作,而TensorFlow主要面向內(nèi)存足以裝載模型參數(shù)的環(huán)境,這樣可以大化計(jì)算效率。
  TensorFlow的另外一個(gè)重要特點(diǎn)是它靈活的移植性,可以將同一份代碼幾乎不經(jīng)過(guò)修改就輕松地部署到有任意數(shù)量CPU或GPU的PC、服務(wù)器或者移動(dòng)設(shè)備上。相比于Theano,TensorFlow還有一個(gè)優(yōu)勢(shì)就是它極快的編譯速度,在定義新網(wǎng)絡(luò)結(jié)構(gòu)時(shí),Theano通常需要長(zhǎng)時(shí)間的編譯,因此嘗試新模型需要比較大的代價(jià),而TensorFlow完全沒(méi)有這個(gè)問(wèn)題。TensorFlow還有功能強(qiáng)大的可視化組件TensorBoard,能可視化網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練過(guò)程,對(duì)于觀察復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)和監(jiān)控長(zhǎng)時(shí)間、大規(guī)模的訓(xùn)練很有幫助。TensorFlow針對(duì)生產(chǎn)環(huán)境高度優(yōu)化,它產(chǎn)品級(jí)的高質(zhì)量代碼和設(shè)計(jì)都可以保證在生產(chǎn)環(huán)境中穩(wěn)定運(yùn)行,同時(shí)一旦TensorFlow廣泛地被工業(yè)界使用,將產(chǎn)生良性循環(huán),成為深度學(xué)習(xí)領(lǐng)域的事實(shí)標(biāo)準(zhǔn)。
  除了支持常見(jiàn)的網(wǎng)絡(luò)結(jié)構(gòu)[卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurent Neural Network,RNN)]外,TensorFlow還支持深度強(qiáng)化學(xué)習(xí)乃至其他計(jì)算密集的科學(xué)計(jì)算(如偏微分方程求解等)。TensorFlow此前不支持symbolic loop,需要使用Python循環(huán)而無(wú)法進(jìn)行圖編譯優(yōu)化,但最近新加入的XLA已經(jīng)開始支持JIT和AOT,另外它使用bucketing trick也可以比較高效地實(shí)現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò)。TensorFlow的一個(gè)薄弱地方可能在于計(jì)算圖必須構(gòu)建為靜態(tài)圖,這讓很多計(jì)算變得難以實(shí)現(xiàn),尤其是序列預(yù)測(cè)中經(jīng)常使用的beam search。
  TensorFlow的用戶能夠?qū)⒂?xùn)練好的模型方便地部署到多種硬件、操作系統(tǒng)平臺(tái)上,支持Intel和AMD的CPU,通過(guò)CUDA支持NVIDIA的GPU(最近也開始通過(guò)OpenCL支持AMD的GPU,但沒(méi)有CUDA成熟),支持Linux和Mac,最近在0.12版本中也開始嘗試支持Windows。在工業(yè)生產(chǎn)環(huán)境中,硬件設(shè)備有些是最新款的,有些是用了幾年的老機(jī)型,來(lái)源可能比較復(fù)雜,TensorFlow的異構(gòu)性讓它能夠全面地支持各種硬件和操作系統(tǒng)。同時(shí),其在CPU上的矩陣運(yùn)算庫(kù)使用了Eigen而不是BLAS庫(kù),能夠基于ARM架構(gòu)編譯和優(yōu)化,因此在移動(dòng)設(shè)備(Android和iOS)上表現(xiàn)得很好。
  TensorFlow在最開始發(fā)布時(shí)只支持單機(jī),而且只支持CUDA 6.5和cuDNN v2,并且沒(méi)有官方和其他深度學(xué)習(xí)框架的對(duì)比結(jié)果。在2015年年底,許多其他框架做了各種性能對(duì)比評(píng)測(cè),每次TensorFlow都會(huì)作為較差的對(duì)照組出現(xiàn)。那個(gè)時(shí)期的TensorFlow真的不快,性能上僅和普遍認(rèn)為很慢的Theano比肩,在各個(gè)框架中可以算是墊底。但是憑借Google強(qiáng)大的開發(fā)實(shí)力,很快支持了新版的cuDNN(目前支持cuDNN v5.1),在單GPU上的性能追上了其他框架。下圖為https://github.com/soumith/convnet-benchmarks給出的各個(gè)框架在AlexNet上單GPU的性能評(píng)測(cè)。
TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
  目前在單GPU的條件下,絕大多數(shù)深度學(xué)習(xí)框架都依賴于cuDNN,因此只要硬件計(jì)算能力或者內(nèi)存分配差異不大,最終訓(xùn)練速度不會(huì)相差太大。但是對(duì)于大規(guī)模深度學(xué)習(xí)來(lái)說(shuō),巨大的數(shù)據(jù)量使得單機(jī)很難在有限的時(shí)間完成訓(xùn)練。這時(shí)需要分布式計(jì)算使GPU集群乃至TPU集群并行計(jì)算,共同訓(xùn)練出一個(gè)模型,所以框架的分布式性能是至關(guān)重要的。TensorFlow在2016年4月開源了分布式版本,使用16塊GPU可達(dá)單GPU的15倍提速,在50塊GPU時(shí)可達(dá)到40倍提速,分布式的效率很高。目前原生支持的分布式深度學(xué)習(xí)框架不多,只有TensorFlow、CNTK、DeepLearning4J、MXNet等。不過(guò)目前TensorFlow的設(shè)計(jì)對(duì)不同設(shè)備間的通信優(yōu)化得不是很好,其單機(jī)的reduction只能用CPU處理,分布式的通信使用基于socket的RPC,而不是速度更快的RDMA,所以其分布式性能可能還沒(méi)有達(dá)到最優(yōu)。
  Google 在2016年2月開源了TensorFlow Serving19,這個(gè)組件可以將TensorFlow訓(xùn)練好的模型導(dǎo)出,并部署成可以對(duì)外提供預(yù)測(cè)服務(wù)的RESTful接口,如圖2-2所示。有了這個(gè)組件,TensorFlow就可以實(shí)現(xiàn)應(yīng)用機(jī)器學(xué)習(xí)的全流程:從訓(xùn)練模型、調(diào)試參數(shù),到打包模型,最后部署服務(wù),名副其實(shí)是一個(gè)從研究到生產(chǎn)整條流水線都齊備的框架。這里引用TensorFlow內(nèi)部開發(fā)人員的描述:“TensorFlow Serving是一個(gè)為生產(chǎn)環(huán)境而設(shè)計(jì)的高性能的機(jī)器學(xué)習(xí)服務(wù)系統(tǒng)。它可以同時(shí)運(yùn)行多個(gè)大規(guī)模深度學(xué)習(xí)模型,支持模型生命周期管理、算法實(shí)驗(yàn),并可以高效地利用GPU資源,讓TensorFlow訓(xùn)練好的模型更快捷方便地投入到實(shí)際生產(chǎn)環(huán)境”。除了TensorFlow以外的其他框架都缺少為生產(chǎn)環(huán)境部署的考慮,而Google作為廣泛在實(shí)際產(chǎn)品中應(yīng)用深度學(xué)習(xí)的巨頭可能也意識(shí)到了這個(gè)機(jī)會(huì),因此開發(fā)了這個(gè)部署服務(wù)的平臺(tái)。TensorFlow Serving可以說(shuō)是一副王牌,將會(huì)幫TensorFlow成為行業(yè)標(biāo)準(zhǔn)做出巨大貢獻(xiàn)。
TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
                      TensorFlow Serving架構(gòu)

  TensorBoard是TensorFlow的一組Web應(yīng)用,用來(lái)監(jiān)控TensorFlow運(yùn)行過(guò)程,或可視化Computation Graph。TensorBoard目前支持5種可視化:標(biāo)量(scalars)、圖片(images)、音頻(audio)、直方圖(histograms)和計(jì)算圖(Computation Graph)。TensorBoard的Events Dashboard可以用來(lái)持續(xù)地監(jiān)控運(yùn)行時(shí)的關(guān)鍵指標(biāo),比如loss、學(xué)習(xí)速率(learning rate)或是驗(yàn)證集上的準(zhǔn)確率(accuracy);Image Dashboard則可以展示訓(xùn)練過(guò)程中用戶設(shè)定保存的圖片,比如某個(gè)訓(xùn)練中間結(jié)果用Matplotlib等繪制(plot)出來(lái)的圖片;Graph Explorer則可以完全展示一個(gè)TensorFlow的計(jì)算圖,并且支持縮放拖曳和查看節(jié)點(diǎn)屬性。TensorBoard的可視化效果如圖2-3和圖2-4所示。
TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
                     TensorBoard的loss標(biāo)量的可視化
                     
TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
                     TensorBoard的模型結(jié)構(gòu)可視化 

主流深度學(xué)習(xí)框架對(duì)比

  TensorFlow擁有產(chǎn)品級(jí)的高質(zhì)量代碼,有Google強(qiáng)大的開發(fā)、維護(hù)能力的加持,整體架構(gòu)設(shè)計(jì)也非常優(yōu)秀。相比于同樣基于Python的老牌對(duì)手Theano,TensorFlow更成熟、更完善,同時(shí)Theano的很多主要開發(fā)者都去了Google開發(fā)TensorFlow(例如書籍Deep Learning的作者Ian Goodfellow,他后來(lái)去了OpenAI)。Google作為巨頭公司有比高校或者個(gè)人開發(fā)者多得多的資源投入到TensorFlow的研發(fā),可以預(yù)見(jiàn),TensorFlow未來(lái)的發(fā)展將會(huì)是飛速的,可能會(huì)把大學(xué)或者個(gè)人維護(hù)的深度學(xué)習(xí)框架遠(yuǎn)遠(yuǎn)甩在身后。
  深度學(xué)習(xí)研究的熱潮持續(xù)高漲,各種開源深度學(xué)習(xí)框架也層出不窮,其中包括TensorFlow、Caffe、Keras、CNTK、Torch7、MXNet、Leaf、Theano、DeepLearning4、Lasagne、Neon,等等。然而TensorFlow卻殺出重圍,在關(guān)注度和用戶數(shù)上都占據(jù)絕對(duì)優(yōu)勢(shì),大有一統(tǒng)江湖之勢(shì)。
TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
  上圖為各個(gè)開源框架在GitHub上的數(shù)據(jù)統(tǒng)計(jì)(數(shù)據(jù)統(tǒng)計(jì)于2017年1月3日),可以看到TensorFlow在star數(shù)量、fork數(shù)量、contributor數(shù)量這三個(gè)數(shù)據(jù)上都完勝其他對(duì)手。究其原因,主要是Google在業(yè)界的號(hào)召力確實(shí)強(qiáng)大,之前也有許多成功的開源項(xiàng)目,以及Google強(qiáng)大的人工智能研發(fā)水平,都讓大家對(duì)Google的深度學(xué)習(xí)框架充滿信心,以至于TensorFlow在2015年11月剛開源的第一個(gè)月就積累了10000+的star。其次,TensorFlow確實(shí)在很多方面擁有優(yōu)異的表現(xiàn),比如設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的代碼的簡(jiǎn)潔度,分布式深度學(xué)習(xí)算法的執(zhí)行效率,還有部署的便利性,都是其得以勝出的亮點(diǎn)。如果一直關(guān)注著TensorFlow的開發(fā)進(jìn)度,就會(huì)發(fā)現(xiàn)基本上每星期TensorFlow都會(huì)有1萬(wàn)行以上的代碼更新,多則數(shù)萬(wàn)行。產(chǎn)品本身優(yōu)異的質(zhì)量、快速的迭代更新、活躍的社區(qū)和積極的反饋,形成了良性循環(huán),可以想見(jiàn)TensorFlow未來(lái)將繼續(xù)在各種深度學(xué)習(xí)框架中獨(dú)占鰲頭。
  觀察可以發(fā)現(xiàn),Google、Microsoft、Facebook等巨頭都參與了這場(chǎng)深度學(xué)習(xí)框架大戰(zhàn),此外,還有畢業(yè)于伯克利大學(xué)的賈揚(yáng)清主導(dǎo)開發(fā)的Caffe,蒙特利爾大學(xué)Lisa Lab團(tuán)隊(duì)開發(fā)的Theano,以及其他個(gè)人或商業(yè)組織貢獻(xiàn)的框架。另外,可以看到各大主流框架基本都支持Python,目前Python在科學(xué)計(jì)算和數(shù)據(jù)挖掘領(lǐng)域可以說(shuō)是獨(dú)領(lǐng)風(fēng)騷。雖然有來(lái)自R、Julia等語(yǔ)言的競(jìng)爭(zhēng)壓力,但是Python的各種庫(kù)實(shí)在是太完善了,Web開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)預(yù)處理、數(shù)據(jù)庫(kù)連接、爬蟲等無(wú)所不能,有一個(gè)完美的生態(tài)環(huán)境。僅在數(shù)據(jù)挖據(jù)工具鏈上,Python就有NumPy、SciPy、Pandas、Scikit-learn、XGBoost等組件,做數(shù)據(jù)采集和預(yù)處理都非常方便,并且之后的模型訓(xùn)練階段可以和TensorFlow等基于Python的深度學(xué)習(xí)框架完美銜接。
  下面對(duì)主流的深度學(xué)習(xí)框架TensorFlow、Caffe、CNTK、Theano、Torch在各個(gè)維度進(jìn)行了評(píng)分。
TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
  本文選自《TensorFlow實(shí)戰(zhàn)》,點(diǎn)此鏈接可在博文視點(diǎn)官網(wǎng)查看此書。
                      TensorFlow與主流深度學(xué)習(xí)框架對(duì)比
  想及時(shí)獲得更多精彩文章,可在微信中搜索“博文視點(diǎn)”或者掃描下方二維碼并關(guān)注。
                                             TensorFlow與主流深度學(xué)習(xí)框架對(duì)比


分享文章:TensorFlow與主流深度學(xué)習(xí)框架對(duì)比-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/docepp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部