在機器學習領域, 不同框架實現的相同演算法,差別能有多大?
性能:
前兩天,好像有人在twitter上求了一個sequence tagger的程序,然後就有人po了一個pytorch版本,然後又有人po了一個dynet版本:
大概的話就是這個樣子
攤手,我也很無奈啊。~~但是pytorch的開發者說這主要是backend的問題,pytorch用的mkl,dynet用的eigen。(intel背鍋去)~~
investigate performance regressions in v0.2.0 + DyNet benchmarks · Issue #2518 · pytorch/pytorch更新了速度慢的原因,不是因為backend。但是會兩三個禮拜之內會將速度提上去。
效果:
我自己實現了pytorch版本的faster-rcnn,基本上是照抄tensorflow版本的。然而結果就是不一樣,雖然resnet101在coco的結果上比tensorflow的還好一點,非常欣慰,但是基本上其他都更爛。。
我之前還試圖把我自己torch的代碼復現到tensorflow。。。。yeah,也是跪得一塌糊塗,就是不知道為什麼結果不一樣。。。。。。總不見得逐行逐行輸出結果比較吧,臣妾做不到啊。
哎呀,換個框架復現都是迷。
其實應該問同一種演算法同一種語言,我實現的為什麼和他們差距那麼大_(:з」∠)_入門機器學習的小白一枚,在這裡強答一下在編譯方便的一小些體驗。
最近在Tensorflow裡面復刻了一下Facebook AI Research的VDCNN模型(順便宣傳一下,地址:https://github.com/zonetrooper32/VDCNN),同期GitHub上還有一個法國人的PyTorch實現(地址:https://github.com/ArdalanM/nlp-benchmarks)。從性能準確度上差距應該不是特別明顯。
調參等等細節方面Tensorflow底層實現靈活性還是可以的,不過在有時間壓力以及不想大量花時間照顧代碼細節,個人感覺PyTorch構建模型應該比比起Tensorflow方便明了一些。
然後就是Tutorials了,Tensorflow的示例代碼在Github還是有不少而且很實用受歡迎的。不過PyTorch的官方NLP教程等等也很細緻,可以說是由淺到深,相比之下Tensorflow官方的API Documents東西還是比較雜,各種tflearn, contrib.layers, keras實現的api參雜在一起,調代碼期間主要還是依賴一些非官方的答疑和教程示例。
總之,如果不是極度專業對性能要求高的話上手一個你偏好的框架就好了。主要還是熟悉套路和代碼維護的技巧,自己用得開心和方便才是關鍵。我覺得這個問題,是否應該改為:不同的框架解決相同的問題,差別有多大?
因為本來不同的框架實現相同演算法,這個研究沒有意義啊。
就 DL 框架而言,大家都在調用cudnn,沒誰比誰更高級。不能怪框架或者演算法,怪就怪用框架寫演算法的人。不同的人結果肯定不一樣,有句話叫什麼來著,一千個人眼中有一千個哈姆雷特。。
比如我同一台電腦,R就比Python 讀取csv慢而且計算消耗大
推薦閱讀:
※截至2017年3月,音樂和人聲分離的研究有哪些最新進展?
※深度学习现在坑还多吗?
※卷積神經網路為什麼要加一層降採樣層呢?
※如何看待李沐MXNet公開課這件事?
※在NLP領域,現階段最有希望突破深度學習牢籠的研究/思路有哪些?
TAG:機器學習 | 統計學習 | 煉丹 | 深度學習DeepLearning | 強化學習ReinforcementLearning |