成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

屬于動態圖的未來:橫向對比PyTorch與Keras

開發 開發工具
最近,Marc Schmidt 在 Reddit 上撰文對 Keras 和 PyTorch 進行了全面的對比。作者認為,PyTorch 在版本管理和調試等方面具有很大優勢。

PyTorch 對機器學習領域的影響正在不斷擴大,人們在使用中也在不斷將其和其他機器學習框架進行對比。最近,Marc Schmidt 在 Reddit 上撰文對 Keras 和 PyTorch 進行了全面的對比。作者認為,PyTorch 在版本管理和調試等方面具有很大優勢。

我可以根據自己作為軟件工程師的經驗(10 年以上)來給你一些答案。我也參與過很多開源項目,還是幾十個開源庫的作者,這些庫都有成千上萬的收藏量和數百萬的安裝量,因此我對于雙方(作者和用戶)在私人和商業領域的應用都相當了解。另外,很多人問我為什么使用的是 aetros.com Keras 而非 Pytorch/xy。

讓我們定義一些屬性來定義庫 X 的好壞:

定義一些屬性來定義庫 X 的好壞

1 星 - 低于平均水平,2 星 - 平均水平,3 星 - 高于平均水平

我來詳細解釋下這張表。

版本管理

當你使用庫(無論開源的還是商業的)并想繼續使用該庫來開發一個應用時,非常重要的一點是這其中不會有隱藏的變化,而且你的應用程序不會在你更新庫(以得到想要的功能或 bug 修復)時發生中斷。最壞的情況是,當你更新第三方庫時出現了一些 bug,你就得開始進行調試。這不僅會花費很多時間而且令人討厭。所以,重要的是你要知道庫更新前后的變化。***的情況是,庫使用了依據 semver(http://semver.org/)的語義版本控制,這確保了你在更新較小的補丁版本時不會發生中斷(至少是在嘗試,并不總能行,但這里的意圖是好的)。

至少,你標記的每個版本都需要一份更新日志,這樣你就能看到 bug(如有)是否已被修復或者一個新功能(如需要)是否已得到實現。我在過去兩年里用 Keras 的次數越來越多,并發現了很多被標記好的版本就簡單地被稱作「新流程發布(New PiPy release)」。可以想象,一個普通的開發者完全不會知道該標簽版本發生了哪些變化。這實際上是 Keras 在行業的專業使用方面尚未完備的其中一個原因,同時它對于優秀且使用廣泛的庫的質量標準也很高。用了 Keras 2 之后,該作者表明他所描述的版本開始變得越來越好了。然而相比于 Pytorch,它仍然給人感覺像是一個自娛自樂的業余項目。參見 https://github.com/fchollet/keras/releases 與 https://github.com/pytorch/pytorch/releases。在看到這樣一個詳細的 Pytorch 版本說明之后我幾乎(幸福地)要哭了。當你在一個專業的環境(對于行業來說,時間就是金錢)中處理它時,這將是你最喜歡的。

在版本管理上,我給 Keras 1 星,因為它的版本管理讓我惡心了好幾次;我給 Pytorch 3 顆星,因為你可以看到在它后面有一個團隊,他們投入了更多的精力來使用戶保持信息靈通。對于 Keras,編寫這種版本說明更像是一個令人討厭的流程。我也跟 PyTorch 的一位作者 Adam Paszke 聊了一下,他說他們很注重這個環節,這讓我有信心在自己的項目中使用它。

調試

好吧,這也是我喜歡 Pytorch 的一點。寫代碼意味著總是發現并修復 bug。你的(隱藏在庫和概念后面的)代碼越不可思議,理解 bug 并找出對應的錯誤代碼行與解決方案的過程就越令你感到痛苦。像 Theano 和 Tensorflow 那樣的靜態圖形庫在尋找問題——「不能將 xy 應用于一個非 2D 或 3D 的張量中」或「輸入 (233, 3, 44, 55) 與 (233, 3, 55, 44) shape 不相容」——根源方面表現得非常笨拙。你需要檢查你的模型并在大腦中計算張量的 shape,也許可以通過注釋掉一些層來找到原因。

有了像 Pytorch 一類的動態圖像,你就可以在堆棧跟蹤中看到哪一行代碼導致了錯誤。你甚至可以在調試器中停掉解釋器并看看某個層會產生什么。通過采用斷點并逐句檢查代碼,你發現上述 bug 的速度就可以提高 100 倍。在你遇到 bug 時,這幾乎就成為了純粹的享受,因為你已經知道「只要讓調試器高速運行就可以在一秒內解決這個小 bug」。這實際上令我回想起自己剛開始使用真正交互式的、帶斷點和運行時評估等功能的調試器的日子,那是一種全新的效率體驗。其中唯一的限制是你在代碼中所建立的抽象邏輯。如果你不能用調試器和 IDE 來調試它,那么你的代碼要么是太糟糕要么是過于抽象。

開發體驗

在這兩個庫中,你的深度神經網絡運行得都很快。Pytorch 還沒有如 Keras 那樣高層次的抽象(帶有回調函數),而是在網絡之外訓練抽象等功能。所以你還是需要寫一些樣板文件。然而,這里(https://github.com/ncullen93/torchsample)Keras 提供的 API 基本上與 Pytorch 的相同。Pytorch 還很青澀,你會遇到一些 DX 方面的問題,比如「如何讓卷積層變平,使它與隱藏層兼容」(提示:僅僅「.add(Flatten())」是無法解決的,但我相信 Pytorch 開發者們正在想辦法解決它。這是我給 Pytorch 2 顆星而給 Keras 3 顆星的原因。Keras 在開發經驗(除了調試)方面非常出色。你可以得到很好的早期效果且能夠進行傻瓜式層編寫。

上線時間

當我在談論庫的上線時間時其實是在說:我們的開發人員需要多長時間來理解庫、發現/修復漏洞、受到庫的啟發(***一點尤其重要,因為一個開發者在燃起了對工具的使用興致后,其開發速度通常會提升 2-5 倍)。兩個庫都很好,盡管 Keras 出現的時間更早且有更多的網上教程和文檔。所以 Pytorch 就比 Keras 少 1 顆星。

社區支持

這個問題很棘手。什么是社區?對于像 Pytorch 和 Keras 之類較小的庫,得有一些對其進行宣傳并(即使是對垃圾問題)提供有價值的解答以及幫助修復社區 bug 的人,這點非常重要。如果你像 Keras 那樣自娛自樂,那么要搞定所有問題是非常困難的。你可以在 Keras 的問題追蹤器中很清楚地看到 2,500 個開放的問題,以至于該項目完全不堪重負。相比之下,Pytorch 是由一個 Facebook 的工程師團隊進行維護,你可以看到那里的問題更少且社區支持更加活躍。如果你在 Keras 中遇到一個問題,可能要等上幾周/月的時間才能(如果可能)得到解決方案。

商業支持

Pytorch 太新了,幾乎還沒有人提供商業支持。我相信連 Facebook 都不會提供任何資金支持。Keras 則有些不一樣。已經有很多使用 Tensorflow/Theano/Keras 來提供開發服務的公司。所以,如果你遇到一個問題并想用錢來解決,則***用 Keras/Tensorflow。

長期發展

我相信在 Facebook 和谷歌對兩個項目的支持下,你大可以說二者會在未來幾年內依然存在。盡管我真的希望 Keras 可以得到一支谷歌團隊或一個開源組織的支持,這樣它就不會僅僅因為大量開放且不斷涌入的問題而死掉。

從長遠來看,靜態圖會成為過去,而相對便于使用的庫會得到越來越多的使用,因為在正常的軟件開發領域,調試和上市時間對于行業的可維護性(機器學習正在朝此方向行進)來說是最重要的。在所有這三個類別中,像 PyTorch 那樣的動態圖像都將綻放光芒。

你可以對任何任務同時部署 Keras 和 PyTorch。你對誰了解得更深,那么你用它編寫異乎尋常的代碼就會更快。雖然我傾向于認為 Pytorch 在編寫非同尋常的事物方面更加靈活,而你可能認為層代碼的編寫就不是這樣。

結論

我現在更喜歡 Keras,因為我上一次試用 PyTorch 時,它還有幾個 GPU 方面的問題,還有另一些問題我沒有克服。在 Keras 上,我的項目已經運行了數月,其效果相當不錯,盡管我在運行時間更久(并非幾天時間)的項目中看到了一些 bug 報告,而且使用靜態圖的后端來調試 Keras 相當麻煩。在接下來的幾個月里,如果 PyTorch 變得越來越穩定,我肯定會轉投 PyTorch 陣營。然而我還想試試 Caffe2。

 

原文:

https://www.reddit.com/r/MachineLearning/comments/6grw9t/n_early_access_to_deep_learning_book_by_keras/

【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2021-05-11 14:45:11

芯片半導體技術

2009-09-22 09:31:08

LINQ to SQL

2021-05-13 15:23:31

人工智能深度學習

2025-02-17 09:32:18

2009-07-10 16:17:41

JVM 1.6

2020-06-02 10:09:59

JavaScript開發 可視化

2020-10-15 11:22:34

PyTorchTensorFlow機器學習

2009-03-17 08:59:35

Windows 7云計算Visual Stud

2025-01-06 07:15:00

深度學習動態圖異常檢測人工智能

2009-05-11 10:40:36

.NETLINQforeach

2019-03-10 22:22:06

PyTorchKeras深度學習

2020-04-19 21:41:13

Python數據可視化

2020-09-17 17:46:20

Python地鐵線路圖

2015-12-15 14:11:12

2010-07-29 09:18:25

JavaFXFlexSilverlight

2022-05-30 11:47:49

數據技術監測

2009-04-01 13:26:08

JavaFXFlexSilverlight

2009-12-08 11:16:07

PHP動態圖像創建

2018-06-14 16:59:42

TensorFlowEager深度學習

2024-07-17 11:46:10

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人色综合久久久天天蜜桃 | 日韩视频在线免费观看 | av中文字幕在线 | 狠狠狠色丁香婷婷综合久久五月 | 国产成人免费视频网站高清观看视频 | 亚洲欧洲视频 | 亚洲欧洲日韩 | 国产又色又爽又黄又免费 | 成人小视频在线观看 | 久久久www | 欧美精品久久久久久久久久 | 午夜精品一区二区三区在线 | 台湾a级理论片在线观看 | 亚洲国产一区二区三区, | 亚洲一区二区三区四区五区中文 | 婷婷一级片 | 国产精品精品视频一区二区三区 | 97在线观看| 亚洲一区二区三区四区视频 | 亚洲一区 | 欧美综合一区 | 天堂av在线影院 | 一区二区亚洲 | 精品福利在线 | 1区2区3区视频 | 成人免费在线小视频 | 久久久精彩视频 | 日本精品免费 | 亚洲精品国产成人 | 日日噜噜夜夜爽爽狠狠 | 成人免费福利视频 | 暖暖日本在线视频 | 四虎成人精品永久免费av九九 | 久久69精品久久久久久久电影好 | 欧美一级大黄 | 国产一区二区av | 91精品国产色综合久久 | 亚洲激情av | 国产一区二区日韩 | 91资源在线观看 | 成人精品一区二区三区中文字幕 |