mxnet,theano與torch的簡單比較


  這篇文章我想來比較一下Theano和mxnet,Torch(Torch基本沒用過,所以只能說一些直觀的感覺)。我主要從以下幾個方面來計較它們:

1.學習框架的成本,接口設計等易用性方面。

  三個框架的學習成本在我看來是

  Theano>Torch>mxnet

  因為Torch底層語言是lua,一種類似python和js的腳本語言,熟悉python或者js的同學學起來應該挺容易(可我偏偏不會腳本語言),但畢竟lua是一種比較小眾的語言,所以對於大多數人來說還是需要花費一定的學習成本,因為我實在是沒有太多的接觸過,所以我只能憑感覺把它排在第二。對於剛從Theano轉到mxnet的我來說,第一各感覺就是編程變的容易了,舉一個非常簡單的例子,在Theano中,定義一個Symbolic scalar還得先查查文檔向量對應什么,矩陣對應什么(簡直難受的要命),而mxnet中對應的symbolic variable只有一個方法。下圖僅僅是Theano Symbolic scalar類型的一部分,當一個初學者使用時會帶來極大的不便。

  我為什么會覺得mxnet最容易學的一個重要原因是:雖然mxnet底層是由c++實現,但它提供了python,lua,R,Go和js等多種語言接口(最近好像還加入了jvm語言scala的接口),這使得使用不同語言的人都可以快速的使用上mxnet而不需要跨過一個語言的鴻溝。這也是為什么我覺得mxnet上手最容易。

2.框架的社區活躍程度,普及性

  首先我們來看看三個框架在github上的star和fork數:

 

  然后是貢獻熱度圖:

  三個框架中,最老牌的要數Theano,框架出現的時間最久,貢獻熱度也穩定。torch是三個中star數最多的,但是貢獻熱度確不是很高,mxnet是一個新興的框架,這個框架的貢獻者熱情非常高漲,一些新近出現的模型可以找到(今天就有新加上了14年的一個比較新的神經語言模型)。所以,三個框架theano和troch已經比較穩定,而且也有大量的論文實驗都是基於着兩個框架的,mxnet出現的時間不久,但社區熱情很高,一些前沿的算法和模型都有mxnet的實現版本。

3.框架性能和可擴展性

   三個框架中,theano和torch都只支持單機版,mxnet支持分布式,mxnet還強調能可以在多種設備上使用。從這個角度來看,theano和torch更適合於研究來使用,而mxnet是有可能和google的tensorflow一樣應用到實際的生產環境中去的。

  

  左右兩張圖分別比較了mxnet與torch和torch與theano的運行速度,雖然這只是在特點例子下的比較,但還是可以清楚的看到,torch和mxnet結合gpu加速計算的能力高於theano。

  以上就是我對這三個框架的一些比較,純屬個人愚見,每個框架都有自己的好處和不足,真正使用哪個框架完全取決於個人的情況,希望我這點比較能提供一點幫助。

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM