国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Keras vs PyTorch:誰是「第一」深度學習框架?

_DangJin / 2756人閱讀

摘要:第一個深度學習框架該怎么選對于初學者而言一直是個頭疼的問題。簡介和是頗受數據科學家歡迎的深度學習開源框架。就訓練速度而言,勝過對比總結和都是深度學習框架初學者非常棒的選擇。

「第一個深度學習框架該怎么選」對于初學者而言一直是個頭疼的問題。本文中,來自 deepsense.ai 的研究員給出了他們在高級框架上的答案。在 Keras 與 PyTorch 的對比中,作者還給出了相同神經網絡在不同框架中性能的基準測試結果。目前在 GitHub 上,Keras 有超過 31,000 個 Stars,而晚些出現的 PyTorch 已有近 17,000 個 Stars。

值得一提的是,盡管在 4 月底 PyTorch 在 0.4 版本中已經加入了對于 Windows 的支持,但其對比 Keras 與 TensorFlow 在 Windows 上的穩定性還略有差距。

兩大框架的鏈接:

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

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

你想學習深度學習嗎?是要將深度學習應用到業務中,還是用深度學習開展副業,抑或只是為了得到一些適合市場需求的技能?無論目標是什么,選擇合適的深度學習框架是達到目標的第一步。

我們強烈建議你選擇 Keras 或 PyTorch。它們都是非常強大的工具,且不管是學習還是實驗都很有樂趣。我們是從教師和學生的角度考慮的。本文作者 Piotr 在企業舉辦過 Keras 和 PyTorch 研討會,Rafa ? 則正在學習這兩種框架。

簡介

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

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

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

在討論二者的具體細節之前,我們想先說明:對于「哪一個框架更好」這個問題我們沒有直接明了的答案。選擇哪一個框架最終取決于你的技術背景、需求和期望。本文旨在幫助你更好地了解何時應該選擇 Keras 或 PyTorch。

一句話總結

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

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

本文不討論選擇 TensorFlow 作為推薦深度學習框架的優劣勢,因為我們認為 TensorFlow 與 Keras(TensorFlow 的官方高級庫)和 PyTorch 相比對于新手不夠友好。盡管你可以找到一些 Theano 教程,但它已不再處于活躍開發狀態。Caffe 缺少靈活性,Torch 使用 Lua 語言(然而其重寫非常難 : ) )。MXNet、Chainer 和 CNTK 目前應用不那么廣泛。

Keras vs PyTorch:易用性和靈活性

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

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

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

下面用在 Keras 和 PyTorch 中定義的簡單卷積網絡來對二者進行對比:

Keras

model ? = ? Sequential ( )

model.add ( Conv2D ( 32, ? ( 3, ? 3 ) , ? activation="relu", ? input_shape= ( 32, ? 32, ? 3 ) ) )

model.add ( MaxPool2D ( ) )

model.add ( Conv2D ( 16, ? ( 3, ? 3 ) , ? activation="relu" ) )

model.add ( MaxPool2D ( ) )

model.add ( Flatten ( ) )

model.add ( Dense ( 10, ? activation="softmax" ) )

PyTorch

class ? Net ( nn.Module ) :

? ? ?def ? __init__ ( self ) :

? ? ? ? ?super ( Net, ? self ) .__init__ ( )

? ? ? ? ?self.conv1 ? = ? nn.Conv2d ( 3, ? 32, ? 3 )

? ? ? ? ?self.conv2 ? = ? nn.Conv2d ( 32, ? 16, ? 3 )

? ? ? ? ?self.fc1 ? = ? nn.Linear ( 16 ? * ? 6 ? * ? 6, ? 10 ) ?

? ? ? ? ?self.pool ? = ? nn.MaxPool2d ( 2, ? 2 )

? ? ?def ? forward ( self, ? x ) :

? ? ? ? ?x ? = ? self.pool ( F.relu ( self.conv1 ( x ) ) )

? ? ? ? ?x ? = ? self.pool ( F.relu ( self.conv2 ( x ) ) )

? ? ? ? ?x ? = ? x.view ( -1, ? 16 ? * ? 6 ? * ? 6 )

? ? ? ? ?x ? = ? F.log_softmax ( self.fc1 ( x ) , ? dim=-1 )

? ? ? ? ?return ? x

model ? = ? Net ( )

上述代碼片段顯示了兩個框架的些微不同。至于模型訓練,它在 PyTorch 中需要大約 20 行代碼,而在 Keras 中只需要一行。GPU 加速在 Keras 中可以進行隱式地處理,而 PyTorch 需要我們指定何時在 CPU 和 GPU 間遷移數據。

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

也就是說,Keras 雖然比 PyTorch 簡單得多,但它絕不是「玩具」,它是初學者以及經驗豐富的數據科學家使用的正經深度學習工具。

例如,在 DSTL 衛星圖像特征檢測 Kaggle 競賽中,最優秀的 3 支隊伍的解決方案都使用了 Keras,第四名(deepsense.ai 隊伍)使用了 PyTorch 和 Keras。

你的深度學習應用所需的靈活性是否超出 Keras 能夠提供的靈活性值得考慮。根據你的需求,遵循 Rule of least power,Keras 可能是最完美的解決方案。

結論

Keras:更簡練,更簡單的 API

PyTorch:更靈活,鼓勵用戶更深入地理解深度學習概念

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

框架流行度不僅代表了易用性,社區支持也很重要——教程、代碼庫和討論組。截至 2018 年 6 月,Keras 和 PyTorch 的流行度不斷增長,不管是 GitHub 還是 arXiv 論文(注意大部分提及 Keras 的論文也提到它的 TensorFlow 后端)。根據 KDnuggets 調查,Keras 和 PyTorch 是增長最快的數據科學工具。

盡管兩個框架的文檔都比較好,但是 PyTorch 的社區支持更強大:其討論板很值得訪問,其中能找到你在文檔或 StackOverflow 中找不到的答案。

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

偉大的 Keras 資源和深度學習課程示例,參見 Piotr Migda ? 寫的文章《Starting deep learning hands-on: image classification on CIFAR-10》,以及 Keras 創建者 Fran ? ois Chollet 寫的書《Deep Learning with Python》。至于 PyTorch 資源,我們推薦官方教程,提供了稍微更有挑戰性的綜合方法來學習神經網絡的內在工作原理。

Keras:大量可獲取教程和可重用代碼

PyTorch:卓越的社區支持和活躍的開發

Keras vs PyTorch:debug 和內省

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

相比起來,PyTorch 更加詳細,我們可以逐行執行腳本。和 debug NumPy 類似,我們可以輕松訪問代碼中的所有對象,使用 print 語句(或任何標準 Python debug 語句)查看有問題的代碼。

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

結論

PyTorch:debug 能力更強

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

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

在生產環境中,導出和部署自己訓練的模型時有哪些選擇?

PyTorch 將模型保存在 Pickles 中,Pickles 基于 Python,且不可移植,而 Keras 利用 JSON + H5 文件格式這種更安全的方法(盡管在 Keras 中保存自定義層通常更困難)。另一方面,Keras 也有 R 語言接口,如果你合作的數據分析師團隊使用 R 語言,那么你會用得上它。

Keras 是在 TensorFlow 上運行的,這意味著它可以通過 TensorFlow for Mobile 和 TensorFlow Lite 享有更多選擇來部署到移動平臺。你編寫的 web 應用也可以通過 TensorFlow.js 或 Keras.js 部署到網頁上。例如,你可以看看這個深度學習驅動的瀏覽器插件,它可以檢測密集恐懼癥觸發因素:https://github.com/cytadela8/trypophobia。

導出 PyTorch 模型的過程由于其 Python 代碼的限制而更加費力,目前人們廣泛采用的方法是首先使用 ONNX 將 PyTorch 模型轉換為 Caffe2 形式。

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

Keras vs PyTorch:性能篇

Donald Knuth 有一句名言:不成熟的優化是編程中所有邪惡(至少大部分)的根源。

在大多數情況下,基準測試中的速度差異不應該成為框架選擇的主要標準——特別是在學習階段。GPU 時間比其數據科學家的時間顯然便宜得多。而且,在學習過程中,性能瓶頸大多是由失敗的實現、未優化的網絡和數據加載造成的,而不是框架本身的運行速度。當然,為了完整地進行比較,我們還是要介紹這一方面。在這里我們推薦兩個性能對比結果:

Wojtek Rosi ń ski 的《TensorFlow, Keras and PyTorch Comparison》:https://wrosinski.github.io/deep-learning-frameworks/

微軟的《Comparing Deep Learning Frameworks: A Rosetta Stone Approach》:https://github.com/ilkarman/DeepLearningFrameworks/

PyTorch 和 TensorFlow 一樣快,在循環神經網絡上或許更快,相比之下,Keras 通常速度較慢。正如第一篇文章的作者指出的那樣:大多數情況下,高性能框架(即 PyTorch 和 TensorFlow)的計算效率優勢不敵快速開發環境以及 Keras 提供的實驗易用性。

就訓練速度而言,PyTorch 勝過 Keras

Keras vs PyTorch:對比總結

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

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

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

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

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

聲明:文章收集于網絡,如有侵權,請聯系小編及時處理,謝謝!

歡迎加入本站公開興趣群

商業智能與數據分析群

興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識

QQ群:81035754

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/4790.html

相關文章

  • ArXiv最受歡迎開源深度學習框架榜單:TensorFlow第一

    摘要:但年月,宣布將在年終止的開發和維護。性能并非最優,為何如此受歡迎粉絲團在過去的幾年里,出現了不同的開源深度學習框架,就屬于其中典型,由谷歌開發和支持,自然引發了很大的關注。 Keras作者Fran?ois Chollet剛剛在Twitter貼出一張圖片,是近三個月來arXiv上提到的深度學習開源框架排行:TensorFlow排名第一,這個或許并不出意外,Keras排名第二,隨后是Caffe、...

    trilever 評論0 收藏0
  • PyTorch和TensorFlow到底哪個更好?看看一線開發者怎么說

    摘要:我認為對機器學習開發者來說,是一個了不起的工具集。這個帖子發出后得到了很多機器學習研究者和開發者的關注,他們紛紛跟貼談論自己的想法和經驗不只是關于和,討論中還涉及到更多工具。 Theano、TensorFlow、Torch、MXNet 再到近日比較熱門的 PyTorch 等等,深度學習框架之間的比較一直以來都是非常受人關注的熱點話題。機器之心也曾發表過多篇相關的介紹和對比文章,如《主流深度學...

    coordinate35 評論0 收藏0
  • 微軟開源的深度學習模型轉換工具MMdnn

    摘要:是微軟開源的用于不同深度學習框架和的模型之間互相轉換的工具,通過模型的中間表示來完成不同框架模型之間的轉換。 MMdnn簡介在工業街和學術界中,開發者或者研究人員可以選擇多種深度學習框架來構建模型,每種框架有自己特有的網絡結構定義以及模型保存格式,這種框架之間的鴻溝阻礙了不同框架模型之間的操作。MMdnn是微軟開源的用于不同深度學習框架(Caffe, Keras, MXNet, Tensor...

    高璐 評論0 收藏0
  • 23種深度學習庫排行榜:TensorFlow最活躍、Keras最流行

    摘要:我們對種用于數據科學的開源深度學習庫作了排名。于年月發布了第名,已經躋身于深度學習庫的上半部分。是最流行的深度學習前端第位是排名較高的非框架庫。頗受對數據集使用深度學習的數據科學家的青睞。深度學習庫的完整列表來自幾個來源。 我們對23種用于數據科學的開源深度學習庫作了排名。這番排名基于權重一樣大小的三個指標:Github上的活動、Stack Overflow上的活動以及谷歌搜索結果。排名結果...

    princekin 評論0 收藏0
  • 從硬件配置到框架選擇,請以這種姿勢入坑深度學習

    摘要:幸運的是,這些正是深度學習所需的計算類型。幾乎可以肯定,英偉達是目前執行深度學習任務較好的選擇。今年夏天,發布了平臺提供深度學習支持。該工具適用于主流深度學習庫如和。因為的簡潔和強大的軟件包擴展體系,它目前是深度學習中最常見的語言。 深度學習初學者經常會問到這些問題:開發深度學習系統,我們需要什么樣的計算機?為什么絕大多數人會推薦英偉達 GPU?對于初學者而言哪種深度學習框架是較好的?如何將...

    marek 評論0 收藏0

發表評論

0條評論

_DangJin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<