深度學習開源框架 Keras vs Pytorch

來源:?http://server.it168.com/a2018/0703/3212/000003212704.shtml

原文鏈接:https://deepsense.ai/keras-or-pytorch/

摘要

  兩大框架的鏈接:

  Keras:https://github.com/keras-team/keras (https://keras.io/)

  PyTorch:https://github.com/pytorch/pytorch

? ? ? ?Keras 或 PyTorch,? 都是非常強大的工具,且不管是學習還是實驗都很有樂趣

一、簡介

  Keras 和 PyTorch 是頗受數(shù)據(jù)科學家歡迎的深度學習開源框架。

  Keras 是能夠在 TensorFlow、CNTK、Theano 或 MXNet 上運行的高級 API(或作為 TensorFlow 內(nèi)的 tf.contrib)。Keras 于 2015 年 3 月首次發(fā)布,之后即因其易用性和語法簡潔性而受到支持,得到快速發(fā)展。Keras 是谷歌支持的一款框架。

? ? ?????PyTorch 于 2017 年 1 月對外發(fā)布,是專注于直接處理數(shù)組表達式的較低級別 API。去年(2017)它受到了大量關注,成為學術研究和需要優(yōu)化自定義表達式的深度學習應用偏好的解決方案。它是 Facebook 支持的一款框架

一句話總結(jié):Keras 更容易學習和用標準層進行實驗,即插即用;PyTorch 提供一種較低級別的方法,對于更具備數(shù)學背景的用戶來講靈活性更強。

二、所以說為何不用其他框架呢?

????????TensorFlow 與 Keras(TensorFlow 的官方高級庫)和 PyTorch 相比對于新手不夠友好。 盡管你可以找到一些 Theano 教程,但它已不再處于活躍開發(fā)狀態(tài)。Caffe 缺少靈活性,Torch 使用 Lua 語言(然而其重寫非常難:))。MXNet、Chainer 和 CNTK 目前應用不那么廣泛。

三、Keras vs PyTorch:易用性和靈活性

? ? ? ?Keras 和 PyTorch 的運行抽象層次不同。

  Keras 是一個更高級別的框架,將常用的深度學習層和運算封裝進干凈、樂高大小的構(gòu)造塊,使數(shù)據(jù)科學家不用再考慮深度學習的復雜度。

  PyTorch 提供一個相對較低級別的實驗環(huán)境,使用戶可以更加自由地寫自定義層、查看數(shù)值優(yōu)化任務。當你可以使用 Python 的全部能量,訪問使用的所有函數(shù)的核心,則復雜架構(gòu)的開發(fā)更加直接。這自然會以冗長為代價。

? ? ? ? ? 如果你是新手,那么 Keras 作為更高級別的框架可能具備明顯優(yōu)勢。Keras 確實可讀性更強,更加簡練,允許用戶跳過一些實現(xiàn)細節(jié),更快地構(gòu)建自己的第一個端到端深度學習模型。但是,忽略這些細節(jié)會限制用戶探索深度學習流程中每個計算模塊內(nèi)在工作原理的機會。使用 PyTorch 會提供更多機會,來更深入地思考深度學習核心概念,如反向傳播以及其他訓練過程。

? ??Keras 雖然比 PyTorch 簡單得多,但它絕不是「玩具」,它是初學者以及經(jīng)驗豐富的數(shù)據(jù)科學家使用的正經(jīng)深度學習工具。

四、Keras vs PyTorch:流行度和可獲取學習資源

? ? ? ? Keras 和 PyTorch 是增長最快的數(shù)據(jù)科學工具。

? ? ? ?基于 Keras 的初學者深度學習課程要比基于 PyTorch 的課程簡單,這使得前者更容易受初學者喜歡。Keras 的代碼可讀性和無與倫比的易用性使它被深度學習愛好者、教師和實力派 Kaggle 冠軍廣泛使用

? ? ? ? PyTorch 資源,我們推薦官方教程,提供了稍微更有挑戰(zhàn)性的綜合方法來學習神經(jīng)網(wǎng)絡的內(nèi)在工作原理。

? ? ? ?Keras:大量可獲取教程和可重用代碼
? ? ? ?PyTorch:卓越的社區(qū)支持和活躍的開發(fā)

五、Keras vs PyTorch:debug 和內(nèi)省

? ? ??Keras 封裝了大量計算模塊,這使得確定導致問題的代碼較為困難。

 ? 相比起來,PyTorch 更加詳細,我們可以逐行執(zhí)行腳本。?

? ? ? Keras 用戶創(chuàng)建的標準網(wǎng)絡要比 PyTorch 用戶創(chuàng)建的標準網(wǎng)絡出錯的機率小一個數(shù)量級。但是一旦出錯,則損害巨大,且通常很難定位出錯的代碼行。PyTorch 提供更直接了當?shù)?debug 經(jīng)驗,而無需關注模型復雜度。此外,當你懷疑哪里出錯時,你可以查找 PyTorch repo 查看可讀代碼。

? ? 結(jié)論

  PyTorch:debug 能力更強

  Keras:debug 簡單網(wǎng)絡的需求的(潛在)頻率更低

六、Keras vs PyTorch:導出模型和跨平臺可移植性

? ? ? ?Keras 獲勝:它有更多的部署選項(直接通過 TensorFlow 后端),模型導出也更簡單。

七、Keras vs PyTorch:性能篇

? ? ? ?PyTorch 和 TensorFlow 一樣快,在循環(huán)神經(jīng)網(wǎng)絡上或許更快,相比之下,Keras 通常速度較慢

八、Keras vs PyTorch:對比總結(jié)

? ? ? ? Keras 和 PyTorch 都是深度學習框架初學者非常棒的選擇。如果你是數(shù)學家、研究員或者想要理解模型的本質(zhì),那么可以考慮選擇 PyTorch。在需要更先進的定制化和 debug 時(例如用 YOLOv3 做目標檢測或者帶有注意力的 LSTM),或者當我們需要優(yōu)化數(shù)組表達式而不是神經(jīng)網(wǎng)絡時(例如矩陣分解或者 word2vec 算法),PyTorch 真的很棒。

  如果你想要一個即插即用的框架,Keras 無疑是更簡單的選擇:快速構(gòu)建、訓練、評估模型,不需要在數(shù)學實現(xiàn)上花費太多的時間。

  深度學習的核心概念知識是可轉(zhuǎn)移的。一旦你掌握了一個環(huán)境中的基礎知識,你就能學以致用,掌握新的深度學習庫。

  我們鼓勵你在 Keras 和 PyTorch 中都嘗試下簡單的深度學習模型

其他比較參考

https://baijiahao.baidu.com/s?id=1613729578388985813&wfr=spider&for=pc


曠視科技

https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9729661428716789262%22%7D&n_type=1&p_from=3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容