丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

2

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

本文作者: AI研習(xí)社-譯站 2018-05-03 09:50
導(dǎo)語:說了這么多,TensorFlow還是無敵

雷鋒網(wǎng)按:本文為雷鋒字幕組編譯的技術(shù)博客,原標(biāo)題The 5 Deep Learning Frameworks Every Serious Machine Learner Should Be Familiar With,作者為James Le。

翻譯 | 楊恕權(quán)  張曉雪  陳明霏     整理 | 凡江

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

圖片來源:Raphael Koh on Unsplash

深度學(xué)習(xí)需要大量的計算。它通常包含具有許多節(jié)點的神經(jīng)網(wǎng)絡(luò),并且每個節(jié)點都有許多需要在學(xué)習(xí)過程中必須不斷更新的連接。換句話說,神經(jīng)網(wǎng)絡(luò)的每一層都有成百上千個相同的人工神經(jīng)元在執(zhí)行相同的計算。因此,神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)適用于GPU(圖形處理單元)可以高效執(zhí)行的計算類型(GPU是專門為并行計算相同指令而設(shè)計的)。

隨著深度學(xué)習(xí)和人工智能在過去幾年的迅速發(fā)展,我們也看到了許多深度學(xué)習(xí)框架的引入。深度學(xué)習(xí)框架的創(chuàng)建目標(biāo)是在GPU上高效運行深度學(xué)習(xí)系統(tǒng)。這些深度學(xué)習(xí)框架都依賴于計算圖的概念,計算圖定義了需要執(zhí)行的計算順序。在這些框架中你使用的是一種可以建立計算圖的語言,并且語言的執(zhí)行機制與其宿主語言本身的機制有所不同。然后,計算圖可以并行地在目標(biāo)GPU中優(yōu)化和運行。 

在這篇文章中,我想向大家介紹推動深度學(xué)習(xí)發(fā)展的5個主力框架。這些框架使數(shù)據(jù)科學(xué)家和工程師更容易為復(fù)雜問題構(gòu)建深度學(xué)習(xí)解決方案,并執(zhí)行更復(fù)雜的任務(wù)。這只是眾多開源框架中的一小部分,由不同的科技巨頭支持,并相互推動更快創(chuàng)新。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

1. TensorFlow (Google)

TensorFlow最初是由Google Brain Team的研究人員和工程師開發(fā)的。其目的是面向深度神經(jīng)網(wǎng)絡(luò)和機器智能研究。自2015年底以來,TensorFlow的庫已正式在GitHub上開源。TensorFlow對于快速執(zhí)行基于圖形的計算非常有用。靈活的TensorFlow API可以通過其GPU支持的架構(gòu)在多個設(shè)備之間部署模型。

簡而言之,TensorFlow生態(tài)系統(tǒng)有三個主要組成部分:

  • 用C ++編寫的TensorFlow API包含用于定義模型和使用數(shù)據(jù)訓(xùn)練模型的API。 它也有一個用戶友好的Python接口。

  • TensorBoard是一個可視化工具包,可幫助分析,可視化和調(diào)試TensorFlow計算圖。

  • TensorFlow Serving是一種靈活的高性能服務(wù)系統(tǒng),用于在生產(chǎn)環(huán)境中部署預(yù)先訓(xùn)練好的機器學(xué)習(xí)模型。Serving也是由C ++編寫并可通過Python接口訪問,可以即時從舊模式切換到新模式。

TensorFlow已被廣泛應(yīng)用于學(xué)術(shù)研究和工業(yè)應(yīng)用。一些值得注意的當(dāng)前用途包括Deep Speech,RankBrain,SmartReplyOn-Device Computer Vision。大家可以在TensorFlow的GitHub項目中查看一些最佳官方用途,研究模型、示例和教程。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

我們來看一個運行的示例。 在這里,我在TensorFlow上用隨機數(shù)據(jù)訓(xùn)練一個基于L2損失的2層ReLU網(wǎng)絡(luò)。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

這個代碼有兩個主要組件:定義計算圖并多次運行這個圖。在定義計算圖時,我為輸入x,權(quán)重w1和w2以及目標(biāo)y創(chuàng)建placeholders進行占位。然后在前向傳播中,我計算目標(biāo)y的預(yù)測以及損失值(損失值為y的真實值與預(yù)測值之間的L2距離)。最后,我讓Tensorflow計算關(guān)于w1和w2的梯度損失。

完成計算圖構(gòu)建之后,我創(chuàng)建一個會話框來運行計算圖。在這里我創(chuàng)建了numpy數(shù)組,它將填充建圖時創(chuàng)建的placeholders(占位符),將它們數(shù)值提供給x,y,w1,w2。為了訓(xùn)練網(wǎng)絡(luò),我反復(fù)運行計算圖,使用梯度來更新權(quán)重然后獲得loss,grad_w1和grad_w2的numpy數(shù)組。

Keras: 高級包裝

深度學(xué)習(xí)框架在兩個抽象級別上運行:低級別--數(shù)學(xué)運算和神經(jīng)網(wǎng)絡(luò)基本實體的實現(xiàn)(TensorFlow, Theano, PyTorch etc.)和高級別--使用低級基本實體來實現(xiàn)神經(jīng)網(wǎng)絡(luò)抽象,如模型和圖層(Keras) 。

Keras是其后端庫的包裝,該后端庫可以是TensorFlow或Theano - 這意味著如果你們在使用以TensorFlow為后端庫的Keras,你實際上是在運行TensorFlow代碼。Keras為您考慮到了許多基本細(xì)節(jié),因為它針對神經(jīng)網(wǎng)絡(luò)技術(shù)用戶,而且非常適合那些練習(xí)數(shù)據(jù)科學(xué)的人。它支持簡單快速的原型設(shè)計,支持多種神經(jīng)網(wǎng)絡(luò)架構(gòu),并可在CPU / GPU上無縫運行。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

在這個例子中,對一個與之前例子中相似的神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,我首先將模型對象定義為一系列圖層,然后定義優(yōu)化器對象。接下來,我建立模型,指定損失函數(shù),并用單個“fit”曲線來訓(xùn)練模型。

2. ?Theano (蒙特利爾大學(xué))

Theano是另一個用于快速數(shù)值計算的Python庫,可以在CPU或GPU上運行。它是蒙特利爾大學(xué)蒙特利爾學(xué)習(xí)算法小組開發(fā)的一個開源項目。它的一些最突出的特性包括GPU的透明使用,與NumPy緊密結(jié)合,高效的符號區(qū)分,速度/穩(wěn)定性優(yōu)化以及大量的單元測試。

遺憾的是,Youshua Bengio(MILA實驗室負(fù)責(zé)人)在2017年11月宣布他們將不再積極維護或開發(fā)Theano。原因在于Theano多年來推出的大部分創(chuàng)新技術(shù)現(xiàn)在已被其他框架所采用和完善。如果有興趣,大家仍然可以為它的開源庫做貢獻。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

Theano在許多方面與TensorFlow相似。那么讓我們來看看另一個代碼示例,使用相同批量和輸入/輸出尺寸來訓(xùn)練神經(jīng)網(wǎng)絡(luò):

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

我首先定義了Theano符號變量(類似于TensorFlow占位符)。對于正向傳播,我計算預(yù)測和損失; 對于反向傳播,我計算梯度。然后我編譯一個函數(shù),根據(jù)數(shù)據(jù)和權(quán)重計算損失,得分和梯度。最后,我多次運行這個函數(shù)來訓(xùn)練網(wǎng)絡(luò)。

3. PyTorch (Facebook)

Pytorch在學(xué)術(shù)研究者中很受歡迎,也是相對比較新的深度學(xué)習(xí)框架。Facebook人工智能研究組開發(fā)了pyTorch來應(yīng)對一些在它前任數(shù)據(jù)庫Torch使用中遇到的問題。由于編程語言Lua的普及程度不高,Torch永遠無法經(jīng)歷Google TensorFlow那樣的迅猛發(fā)展。因此,PyTorch采用了被已經(jīng)為許多研究人員,開發(fā)人員和數(shù)據(jù)科學(xué)家所熟悉的原始Python命令式編程風(fēng)格。同時它還支持動態(tài)計算圖,這一特性使得它對做時間序列以及自然語言處理數(shù)據(jù)相關(guān)工作的研究人員和工程師很有吸引力。

到目前為止,Uber將PyTorch使用得最好,它已經(jīng)構(gòu)建了Pyro,一種使用PyTorch作為其后端的通用概率編程語言。 PyTorch的動態(tài)差異化執(zhí)行能力和構(gòu)建梯度的能力對于概率模型中的隨機操作非常有價值。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

PyTorch有3個抽象層次:

? 張量:命令性的ndarray,但在GPU上運行

? 變量:計算圖中的節(jié)點;存儲數(shù)據(jù)和梯度

? 模塊:神經(jīng)網(wǎng)絡(luò)層;可以存儲狀態(tài)或可學(xué)習(xí)的權(quán)重

在這里我將著重談一談張量抽象層次。 PyTorch張量就像numpy數(shù)組,但是它們可以在GPU上運行。沒有內(nèi)置的計算圖或梯度或深度學(xué)習(xí)的概念。在這里,我們使用PyTorch Tensors(張量)擬合一個2層網(wǎng)絡(luò):

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

正如你所看到的,我首先為數(shù)據(jù)和權(quán)重創(chuàng)建隨機張量。然后我計算正向傳播過程中的預(yù)測和損失,并在反向傳播過程中手動計算梯度。我也為每個權(quán)重設(shè)置梯度下降步長。最后,我通過多次運行該功能來訓(xùn)練網(wǎng)絡(luò)。

4. ?Torch (NYU / Facebook)

接下來我們來談?wù)凾orch。它是Facebook的開源機器學(xué)習(xí)庫科學(xué)計算框架和基于Lua編程語言的腳本語言。它提供了廣泛的深度學(xué)習(xí)算法,并已被Facebook,IBM,Yandex和其他公司用于解決數(shù)據(jù)流的硬件問題。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架


作為PyTorch的直系祖先,Torch與PyTorchg共享了很多C后端。與具有3個抽象級別的PyTorch不同,Torch只有2個:張量模塊。讓我們試一試一個使用Torch張量來訓(xùn)練兩層神經(jīng)網(wǎng)絡(luò)的代碼教程:

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

最初,我建立了一個多層的神經(jīng)網(wǎng)絡(luò)模型,以及一個損失函數(shù)。接下來,我定義一個回溯函數(shù),輸入權(quán)重并在權(quán)重上產(chǎn)生損失/梯度。在函數(shù)內(nèi)部,我計算前向傳播中的預(yù)測和損失,以及反向傳播中的梯度。最后,我反復(fù)將該回溯函數(shù)傳遞給優(yōu)化器進行優(yōu)化。

5. ?Caffe (UC Berkeley)

Caffe是一個兼具表達性、速度和思維模塊化的深度學(xué)習(xí)框架。由伯克利人工智能研究小組和伯克利視覺和學(xué)習(xí)中心開發(fā)。雖然其內(nèi)核是用C ++編寫的,但Caffe有Python和Matlab相關(guān)接口。這對訓(xùn)練或微調(diào)前饋分類模型非常有用。雖然它在研究中使用得并不多,但它仍然很受部署模型的歡迎,正如社區(qū)貢獻者所證明的那樣。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

為了使用Caffe訓(xùn)練和微調(diào)神經(jīng)網(wǎng)絡(luò),您需要經(jīng)過4個步驟:

1. 轉(zhuǎn)換數(shù)據(jù):我們讀取數(shù)據(jù)文件,然后清洗并以Caffe可以使用的格式存儲它們。我們將編寫一個進行數(shù)據(jù)預(yù)處理和存儲的Python腳本。

2. 定義模型:模型定義了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。我們選擇CNN體系結(jié)構(gòu)并在擴展名為.prototxt的配置文件中定義其參數(shù)。

3. 定義求解器:求解器負(fù)責(zé)模型優(yōu)化,定義所有關(guān)于如何進行梯度下降的信息。我們在擴展名為.prototxt的配置文件中定義求解器參數(shù)。

4. 訓(xùn)練模型:一旦我們準(zhǔn)備好模型和求解器,我們就通過從終端調(diào)用caffe binary(咖啡因)來訓(xùn)練模型。訓(xùn)練好模型后,我們將在一個擴展名為.caffemodel的文件中獲得訓(xùn)練好的模型。

我不會為Caffe做代碼展示,但是您可以在Caffe的主頁上查看一個教程??偟膩碚f,Caffe對于前饋網(wǎng)絡(luò)和微調(diào)現(xiàn)有網(wǎng)絡(luò)非常有用。您可以輕松地訓(xùn)練模型而無需編寫任何代碼。它的Python接口非常有用,因為您可以在不使用Python代碼的情況下部署模型。不利的一面是,您需要為每個新的GPU圖層編寫C++內(nèi)核代碼(在Caffe下)。因此,大網(wǎng)絡(luò)(AlexNet,VGG,GoogLeNet,ResNet等)的構(gòu)建將會非常麻煩。

您應(yīng)該使用哪種深度學(xué)習(xí)框架?

由于Theano不再繼續(xù)被開發(fā),Torch是以不為許多人熟悉的Lua語言編寫的,Caffe還處于它的早熟階段,TensorFlow和PyTorch成為大多數(shù)深度學(xué)習(xí)實踐者的首選框架。雖然這兩個框架都使用Python,但它們之間存在一些差異:

? PyTorch有更加干凈清爽的接口,更易于使用,特別適合初學(xué)者。大部分代碼編寫較為直觀,而不是與庫進行戰(zhàn)斗。相反,TensorFlow擁有更繁雜的小型、含混的庫。

? 然而,TensorFlow擁有更多的支持和一個非常龐大,充滿活力和樂于助人的社區(qū)。這意味著TensorFlow的在線課程,代碼教程,文檔和博客帖子多于PyTorch。

? 也就是說,PyTorch作為一個新平臺,有許多有趣的功能尚未被完善。但是令人驚奇的是PyTorch在短短一年多的時間里取得了巨大的成就。

? TensorFlow更具可擴展性,并且與分布式執(zhí)行非常兼容。它支持從僅GPU到涉及基于實時試驗和錯誤的繁重分布式強化學(xué)習(xí)的龐大系統(tǒng)的所有的系統(tǒng)。

最重要的是,TensorFlow是“定義 - 運行”,在圖形結(jié)構(gòu)中定義條件和迭代,然后運行它。另一方面,PyTorch是“按運行定義”,其中圖結(jié)構(gòu)是在正向計算過程中實時定義的。換句話說,TensorFlow使用靜態(tài)計算圖,而PyTorch使用動態(tài)計算圖。基于動態(tài)圖的方法為復(fù)雜體系結(jié)構(gòu)(如動態(tài)神經(jīng)網(wǎng)絡(luò))提供了更易于操作的調(diào)試功能和更強的處理能力。基于靜態(tài)圖的方法可以更方便地部署到移動設(shè)備,更容易部署到更具不同的體系結(jié)構(gòu),以及具有提前編譯的能力。

因此,PyTorch更適合于愛好者和小型項目的快速原型開發(fā),而TensorFlow更適合大規(guī)模部署,尤其是在考慮跨平臺和嵌入式部署時。 TensorFlow經(jīng)受了時間的考驗,并且仍然被廣泛使用。它對大型項目具有更多功能和更好的可擴展性。 PyTorch越來越容易學(xué)習(xí),但它并沒有與TensorFlow相同的一體化整合功能。這對于需要快速完成的小型項目非常有用,但對于產(chǎn)品部署并不是最佳選擇。

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

圖片來源: Jamie Street on Unsplash

寫在最后

上述列舉只是眾多框架中較為突出的框架,并且大多數(shù)支持Python語言。去幾年里發(fā)布了多個新的深度學(xué)習(xí)框架,如DeepLearning4j(Java),Apache的MXNet(R,Python,Julia),Microsoft CNTK(C ++,Python)和Intel的Neon(Python)。每個框架都是不同的,因為它們是由不同的人為了不同的目的而開發(fā)的。有一個整體的大致了解會幫助你解決你的下一個深度學(xué)習(xí)難題。在選擇適合您的最佳選擇時,易于使用(就架構(gòu)和處理速度而言),GPU支持,教程和培訓(xùn)材料的獲得難度,神經(jīng)網(wǎng)絡(luò)建模功能以及支持的語言都是重要的考慮因素。

博客原址 https://heartbeat.fritz.ai/the-5-deep-learning-frameworks-every-serious-machine-learner-should-be-familiar-with-93f4d469d24c


添加雷鋒字幕組微信號(leiphonefansub)為好友

備注「我要加入」,To be an  AI  Volunteer ! 雷鋒網(wǎng)雷鋒網(wǎng)

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

機器學(xué)習(xí)者必知的5種深度學(xué)習(xí)框架

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說