什麼是PyTorch,為何要使用PyTorch

2021-09-22 21:00:01 字數 1458 閱讀 1485

pytorch 是torch7 團隊開發的,從它的名字就可以看出,其與torch 的不同之處在於pytorch 使用了python 作為開發語言。所謂「python first」,同樣說明它是乙個以python 優先的深度學習框架,不僅能夠實現強大的gpu 加速,同時還支援動態神經網路,這是現在很多主流框架比如tensorflow 等都不支援的。

pytorch 既可以看做加入了gpu 支援的numpy,同時也可以看成乙個擁有自動求導功能的強大的深度神經網路,除了facebook 之外,它還已經被twitter、cmu 和salesforce 等機構採用。

面對如此多的深度學習框架,我們為何要選擇pytorch 呢?tensorflow 不是深度學習框架預設的老大嗎,為什麼不直接選擇tensorflow 而是要選擇pytorch 呢?下面分4個方面來介紹為何要使用pytorch。

(1)掌握乙個框架並不能一勞永逸,現在深度學習並沒有誰擁有絕對的壟斷地位,就算是google 也沒有,所以只學習tensorflow 並不夠。同時現在的研究者使用各個框架的都有,如果你要去看他們實現的**,至少也需要了解他們使用的框架,所以多學乙個框架,以備不時之需。

(2)tensorflow 與caffe 都是命令式的程式語言,而且是靜態的,首先必須構建乙個神經網路,然後一次又一次使用同樣的結構,如果想要改變網路的結構,就必須從頭開始。但是對於pytorch,通過一種反向自動求導的技術,可以讓你零延遲地任意改變神經網路的行為,儘管這項技術不是pytorch 獨有,但目前為止它實現是最快的,能夠為你任何瘋狂想法的實現獲得最高的速度和最佳的靈活性,這也是pytorch 對比tensorflow 最大的優勢。

(3)pytorch 的設計思路是線性、直觀且易於使用的,當你執行一行**時,它會忠實地執行,並沒有非同步的世界觀,所以當你的**出現bug 的時候,可以通過這些資訊輕鬆快捷地找到出錯的**,不會讓你在debug 的時候因為錯誤的指向或者非同步和不透明的引擎浪費太多的時間。

(4)pytorch 的**相對於tensorflow 而言,更加簡潔直觀,同時對於tensorflow高度工業化的很難看懂的底層**,pytorch 的源**就要友好得多,更容易看懂。深入api,理解pytorch 底層肯定是一件令人高興的事。乙個底層架構能夠看懂的框架,你對其的理解會更深。

最後,我們簡要總結一下pytorch 的特點:

擁有著如此多優點的.pytorch 也有著它的缺點,首先pytorch 於2017 年3 月開源發布,目前還是beta 測試版,沒有發布正式版本,所以可能有一些小的bug;其次因為這款框架比較新,所以使用的人也就比較少,這也就使得它的社群沒有那麼強大,但是pytorch 提供了乙個官方的論壇,大多數碰到的問題都可以去裡面搜尋,裡面的答案一般都是由作者或者其他pytorch 使用者提供的,論壇的更新也特別頻繁,同時也可以去github 上面提issue,一般很快就會得到開發者的回應,也算是一定程度上解決了社群的問題。

什麼是ORM為什麼要使用ORM

簡單來說,按通常的系統設計,使用 jdbc 運算元據庫,業務處理邏輯和資料訪問邏輯是混雜在一起的。一般基本都是如下幾個步驟 1 建立資料庫連線,獲得 connection 物件。2 根據使用者的輸入組裝查詢 sql 語句。3 根據 sql 語句建立 statement 物件 或者 prepareds...

什麼是DTD,為什麼要使用DTD

什麼是dtd,為什麼要使用dtd dtd為英文document type definition,中文意思為 文件類定義 dtd肩負著兩重任務 一方面它幫助你編寫合法的 另一方面它讓瀏覽器正確地顯示器 也許你會問它們居然有這樣的能力?如是你是乙個個網頁製作者,你會很清楚地知道乙個html文件的基本結構...

什麼是ORM 為什麼要使用ORM

了解orm,先了解以下概念 什麼是 持久化 持久 persistence 即把資料 如記憶體中的物件 儲存到可永久儲存的儲存裝置中 如磁碟 持久化的主要應用是將記憶體中的資料儲存在關係型的資料庫中,當然也可以儲存在磁碟檔案中 xml資料檔案中等等。什麼是 持久層 持久層 persistence la...