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

從TensorFlow到Theano:橫向?qū)Ρ绕叽笊疃葘W(xué)習(xí)框架

移動開發(fā)
來自數(shù)據(jù)科學(xué)公司 Silicon Valley Data Science 的數(shù)據(jù)工程師 Matt Rubashkin(UC Berkeley 博士)為我們帶來了深度學(xué)習(xí) 7 種流行框架的深度橫向?qū)Ρ?,希望本文能對你帶來幫助?/div>

在深度學(xué)習(xí)項目開始前,選擇一個合適的框架是非常重要的事情。最近,來自數(shù)據(jù)科學(xué)公司 Silicon Valley Data Science 的數(shù)據(jù)工程師 Matt Rubashkin(UC Berkeley 博士)為我們帶來了深度學(xué)習(xí) 7 種流行框架的深度橫向?qū)Ρ?,希望本文能對你帶來幫助?/p>

 

[[195830]]

在 SVDS,我們的研發(fā)團隊一直在研究不同的深度學(xué)習(xí)技術(shù);從識別圖像到語音,我們也在各類框架下實現(xiàn)了不少應(yīng)用。在這個過程中,我們意識到需要一個簡明的方式來獲取數(shù)據(jù)、創(chuàng)建模型、同時評估這些模型的表現(xiàn)。但當我們一次次開始新的深度學(xué)習(xí)項目時,我們卻一直沒有找到一個可以參考的標準來告訴自己如何開始。

現(xiàn)在,為了回饋開源社區(qū),同時幫助后來者,我們決定以我們的經(jīng)驗對目前流行的幾種工具(Theano、TensorFlow、Torch、Caffe、MXNet、Neon 和 CNTK)進行一次橫向?qū)Ρ取R韵聢D表展示了各類深度學(xué)習(xí)工具的優(yōu)劣,希望對大家能有所幫助。

先放結(jié)論:

 

結(jié)論

這組對比參考了多種公開基準評測,以及我們在圖像/語音識別應(yīng)用時對這些技術(shù)的 主觀印象。此外,你需要注意:

語言

當你開始一個深度學(xué)習(xí)項目時,你***使用一個支持你所會語言的框架。比如 Caffe(C++)和 Torch(Lua)只能支持有限的語言(最近,隨著 PyTorch 的出現(xiàn),情況有所改觀)。所以如果你希望選用上述兩個框架,我們建議你事先熟悉 C++或 Lua 語言。相比之下,TensorFlow 與 MXNet 具有豐富的多語言支持,即使你對 C++感到陌生也可以使用它們。

 

對比

 

Contributors

教程和資源

目前,各類深度學(xué)習(xí)框架的教程與可利用的資源在質(zhì)量和數(shù)量上有著顯著的不同。Theano,TensorFlow,Torch 和 MXNet 有著很詳盡的文檔教程,很容易被初學(xué)者理解和實現(xiàn)。與此相比,雖然微軟的 CNTK 和英特爾的 Nervana Neon 也是強大的工具,我們卻很少能見到有關(guān)它們的新手級資料。此外,在研究過程中,我們發(fā)現(xiàn) GitHub 社區(qū)的參與度不僅可以用于準確地評價不同工具的開發(fā)水平,而且還是在搜索 StackOverflow 或 repo 的 Git Issues 時能否快速解決問題的參考性指標。當然,作為谷歌提供的框架,TensorFlow 理所當然地在教程,資源,開發(fā)者和社區(qū)貢獻者的數(shù)量上***。

 

對比圖

CNN 建模能力

卷積神經(jīng)網(wǎng)絡(luò)(CNN)經(jīng)常被用于圖像識別、推薦引擎和自然語言識別等方向的應(yīng)用。CNN 由一組多層的神經(jīng)網(wǎng)絡(luò)組成,在運行時會將輸入的數(shù)據(jù)進行預(yù)定義分類的評分。CNN 也可用于回歸分析,例如構(gòu)成自動駕駛汽車中有關(guān)轉(zhuǎn)向角的模型。在橫評中,我們評價一種框架的 CNN 建模能力考慮到以下幾個特性:定義模型的機會空間、預(yù)構(gòu)建層的可用性、以及可用于連接這些層的工具和功能。我們發(fā)現(xiàn),Theano,Caffe 和 MXNet 都有很好的 CNN 建模能力。其中,TensorFlow 因為易于建立的 Inception V3 模型,Torch 因為其豐富的 CNN 資源——包括易于使用的時間卷積集使得這兩種框架在 CNN 建模能力上脫穎而出。

RNN 建模能力

循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)常用于語音識別,時間序列預(yù)測,圖像字幕和其他需要處理順序信息的任務(wù)。由于預(yù)建的 RNN 模型不如 CNN 數(shù)量多,因此,如果你已經(jīng)有一個 RNN 深度學(xué)習(xí)項目,優(yōu)先考慮舊 RNN 模型是在哪種框架里實現(xiàn)的最重要。目前,Caffe 上的 RNN 資源最少,而 Microsoft 的 CNTK 和 Torch 有豐富的 RNN 教程和預(yù)構(gòu)建模型。當然,***的 TensorFlow 中也有一些 RNN 資源,TFLearn 和 Keras 中更有很多使用 TensorFlow 的 RNN 示例。

架構(gòu)

為在特定框架中構(gòu)建和訓(xùn)練新模型,易于使用和模塊化的前端是至關(guān)重要的。TensorFlow,Torch 和 MXNet 都有直觀而模塊化的架構(gòu),讓開發(fā)相對變得簡單。相比之下,我們在 Caffe 這樣的框架上需要進行大量的工作才能創(chuàng)建一個新層。另外我們發(fā)現(xiàn)在開發(fā)過程中,因為有 TensorBoard web GUI 等應(yīng)用的存在,TensorFlow 極易在訓(xùn)練中和訓(xùn)練后進行 debug 和監(jiān)控。

速度

Torch 和 Nervana 具有開源卷積神經(jīng)網(wǎng)絡(luò)基準測試的***性能:

https://github.com/soumith/convnet-benchmarks/blob/master/README.md

Tensorflow 的性能在大多數(shù)測試中是具有競爭力的,而 Caffe 和 Theano 稍稍落后:

https://github.com/tobigithub/tensorflow-deep-learning/wiki/tf-benchmarks

微軟聲稱他們的 CNTK 在一些 RNN 訓(xùn)練任務(wù)中有最快的速度。

在另一項對比 Theano、Torch 和 TensorFlow 的 RNN 性能的研究中,Theano 是其中最快的:

https://arxiv.org/abs/1511.06435

多 GPU 支持

大多數(shù)深度學(xué)習(xí)應(yīng)用都需要用到巨量的浮點運算(FLOP)。例如,百度的 DeepSpeech 識別模型需要 10s ExaFLOPs 用于訓(xùn)練,這是大于 10e18 的計算量:

https://arxiv.org/abs/1512.02595

考慮到目前英偉達 Pascal 架構(gòu)的 TitanX 等***顯卡可以每秒執(zhí)行 10e9 FLOP:

https://www.nvidia.com/en-us/geforce/products/10series/titan-x-pascal/

因此,假如需要在大型數(shù)據(jù)集上訓(xùn)練一個新模型——用單 GPU 機器的話——可能會需要一個星期之久。為了減少構(gòu)建模型所需的時間,我們需要使用多 GPU 并聯(lián)的方式組建自己的機器。幸運的是,上述大部分架構(gòu)都可以很好地支持多 GPU 運算。其中,據(jù)報道 MXNet 有著***的多 GPU 優(yōu)化引擎:

http://www.allthingsdistributed.com/2016/11/mxnet-default-framework-deep-learning-aws.html

Keras 兼容性

Keras 是一個用于快速構(gòu)建深度學(xué)習(xí)原型的高級庫。我們在實踐中發(fā)現(xiàn),它是數(shù)據(jù)科學(xué)家應(yīng)用深度學(xué)習(xí)的好幫手。Keras 目前支持兩種后端框架:TensorFlow 與 Theano,而且 Keras 再過不久就會成為 TensorFlow 的默認 API:

http://www.fast.ai/2017/01/03/keras/

盡管如此,Keras 的作者表示,這一高級庫在未來仍會作為支持多種框架的前端存在:

https://github.com/fchollet/keras/issues/5050#issuecomment-272945570

總結(jié)

如果你想要開始深度學(xué)習(xí),你應(yīng)該從評估自己的團隊技能和業(yè)務(wù)需求開始。例如,如果一個以 Python 為中心的團隊想開發(fā)圖像識別的應(yīng)用程序,你應(yīng)該使用 TensorFlow,因為它有豐富的資源,較好性能和完整的原型工具。如果一個有 Lua 能力的團隊希望將 RNN 大規(guī)模應(yīng)用到生產(chǎn)環(huán)境中去,他們則會受益于 Torch 的高速和強大的 RNN 建模能力。

未來,我們將繼續(xù)討論在更大規(guī)模的應(yīng)用中這些框架的表現(xiàn)。這些挑戰(zhàn)包括多機并聯(lián)時的多 GPU 優(yōu)化,多種開源庫的兼容性,如 CMU Sphinx 和 Kaldi 等,盡請期待。

責任編輯:張子龍 來源: 機器之心
相關(guān)推薦

2017-03-01 13:36:41

TensorFlowTheano框架

2020-02-25 15:04:48

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

2017-03-06 15:25:47

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

2017-09-18 17:34:53

深度學(xué)習(xí)學(xué)習(xí)框架Keras

2009-12-01 14:35:06

Linux忠告

2012-08-06 10:34:26

JavaScript框架

2017-05-05 10:15:38

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

2012-08-06 10:51:40

JavaScript

2017-01-04 10:47:45

TensorFlow框架Theano

2017-01-06 13:00:44

框架TensorFlowTheano

2017-08-07 11:02:28

機器學(xué)習(xí)分布式Spark

2019-03-06 09:55:54

Python 開發(fā)編程語言

2017-04-11 08:34:21

深度學(xué)習(xí)算法神經(jīng)網(wǎng)絡(luò)

2017-02-21 10:00:44

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

2019-09-26 05:30:03

物聯(lián)網(wǎng)通信協(xié)議IOT

2020-08-28 17:54:31

深度學(xué)習(xí)框架

2022-11-13 08:11:03

TensorFlow人工智能開源

2010-04-15 09:59:48

開源軟件

2018-09-10 06:00:12

2016-12-23 09:09:54

TensorFlowKubernetes框架
點贊
收藏

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