來源:?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
曠視科技