溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

一文告訴你為選擇pytorch

發(fā)布時(shí)間:2020-11-12 09:22:46 來源:億速云 閱讀:190 作者:Leah 欄目:開發(fā)技術(shù)

一文告訴你為選擇pytorch?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

一.Pytorch是什么?

Pytorch是torch的python版本,是由Facebook開源的神經(jīng)網(wǎng)絡(luò)框架,專門針對(duì) GPU 加速的深度神經(jīng)網(wǎng)絡(luò)(DNN)編程。Torch 是一個(gè)經(jīng)典的對(duì)多維矩陣數(shù)據(jù)進(jìn)行操作的張量(tensor )庫,在機(jī)器學(xué)習(xí)和其他數(shù)學(xué)密集型應(yīng)用有廣泛應(yīng)用。與Tensorflow的靜態(tài)計(jì)算圖不同,pytorch的計(jì)算圖是動(dòng)態(tài)的,可以根據(jù)計(jì)算需要實(shí)時(shí)改變計(jì)算圖。但由于Torch語言采用 Lua,導(dǎo)致在國內(nèi)一直很小眾,并逐漸被支持 Python 的 Tensorflow 搶走用戶。作為經(jīng)典機(jī)器學(xué)習(xí)庫 Torch 的端口,PyTorch 為 Python 語言使用者提供了舒適的寫代碼選擇。

二.為什么選擇 Pytorch?

 1.簡潔:

PyTorch的設(shè)計(jì)追求最少的封裝,盡量避免重復(fù)造輪子。不像 TensorFlow 中充斥著session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch 的設(shè)計(jì)遵循tensor→variable(autograd)→nn.Module 三個(gè)由低到高的抽象層次,分別代表高維數(shù)組(張量)、自動(dòng)求導(dǎo)(變量)和神經(jīng)網(wǎng)絡(luò)(層/模塊),而且這三個(gè)抽象之間聯(lián)系緊密,可以同時(shí)進(jìn)行修改和操作。 簡潔的設(shè)計(jì)帶來的另外一個(gè)好處就是代碼易于理解。PyTorch的源碼只有TensorFlow的十分之一左右,更少的抽象、更直觀的設(shè)計(jì)使得PyTorch的源碼十分易于閱讀。

2.速度:

PyTorch 的靈活性不以速度為代價(jià),在許多評(píng)測中,PyTorch 的速度表現(xiàn)勝過 TensorFlow和Keras 等框架??蚣艿倪\(yùn)行速度和程序員的編碼水平有極大關(guān)系,但同樣的算法,使用PyTorch實(shí)現(xiàn)的那個(gè)更有可能快過用其他框架實(shí)現(xiàn)的。

3.易用:

PyTorch 是所有的框架中面向?qū)ο笤O(shè)計(jì)的最優(yōu)雅的一個(gè)。PyTorch的面向?qū)ο蟮慕涌谠O(shè)計(jì)來源于Torch,而Torch的接口設(shè)計(jì)以靈活易用而著稱,Keras作者最初就是受Torch的啟發(fā)才開發(fā)了Keras。PyTorch繼承了Torch的衣缽,尤其是API的設(shè)計(jì)和模塊的接口都與Torch高度一致。PyTorch的設(shè)計(jì)最符合人們的思維,它讓用戶盡可能地專注于實(shí)現(xiàn)自己的想法,即所思即所得,不需要考慮太多關(guān)于框架本身的束縛。

4.活躍的社區(qū):

PyTorch 提供了完整的文檔,循序漸進(jìn)的指南,作者親自維護(hù)的論壇 供用戶交流和求教問題。Facebook 人工智能研究院對(duì) PyTorch 提供了強(qiáng)力支持,作為當(dāng)今排名前三的深度學(xué)習(xí)研究機(jī)構(gòu),F(xiàn)AIR的支持足以確保PyTorch獲得持續(xù)的開發(fā)更新,不至于像許多由個(gè)人開發(fā)的框架那樣曇花一現(xiàn)。

三.PyTorch 的架構(gòu)是怎樣的?

PyTorch(Caffe2) 通過混合前端,分布式訓(xùn)練以及工具和庫生態(tài)系統(tǒng)實(shí)現(xiàn)快速,靈活的實(shí)驗(yàn)和高效生產(chǎn)。PyTorch 和 TensorFlow 具有不同計(jì)算圖實(shí)現(xiàn)形式,TensorFlow 采用靜態(tài)圖機(jī)制(預(yù)定義后再使用),PyTorch采用動(dòng)態(tài)圖機(jī)制(運(yùn)行時(shí)動(dòng)態(tài)定義)。PyTorch 具有以下高級(jí)特征:

  • 混合前端:新的混合前端在急切模式下提供易用性和靈活性,同時(shí)無縫轉(zhuǎn)換到圖形模式,以便在C ++運(yùn)行時(shí)環(huán)境中實(shí)現(xiàn)速度,優(yōu)化和功能。 
  • 分布式訓(xùn)練:通過利用本地支持集合操作的異步執(zhí)行和可從Python和C ++訪問的對(duì)等通信,優(yōu)化了性能。
  • Python優(yōu)先: PyTorch為了深入集成到Python中而構(gòu)建的,因此它可以與流行的庫和Cython和Numba等軟件包一起使用。
  • 豐富的工具和庫:活躍的研究人員和開發(fā)人員社區(qū)建立了豐富的工具和庫生態(tài)系統(tǒng),用于擴(kuò)展PyTorch并支持從計(jì)算機(jī)視覺到強(qiáng)化學(xué)習(xí)等領(lǐng)域的開發(fā)。 
  • 本機(jī)ONNX支持:以標(biāo)準(zhǔn)ONNX(開放式神經(jīng)網(wǎng)絡(luò)交換)格式導(dǎo)出模型,以便直接訪問與ONNX兼容的平臺(tái),運(yùn)行時(shí),可視化工具等。 
  • C++前端:C++前端是PyTorch的純C++接口,它遵循已建立的Python前端的設(shè)計(jì)和體系結(jié)構(gòu)。它旨在實(shí)現(xiàn)高性能,低延遲和裸機(jī)C++應(yīng)用程序的研究。 使用GPU和CPU優(yōu)化的深度學(xué)習(xí)張量庫。

四.Pytorch 與 tensorflow 之間的差異在哪里?

上面也將了PyTorch 最大優(yōu)勢是建立的神經(jīng)網(wǎng)絡(luò)是動(dòng)態(tài)的, 對(duì)比靜態(tài)的 Tensorflow, 它能更有效地處理一些問題, 比如說 RNN 變化時(shí)間長度的輸出。各有各的優(yōu)勢和劣勢。兩者都是大公司發(fā)布的, Tensorflow(Google)宣稱在分布式訓(xùn)練上下了很大的功夫, 那就默認(rèn) Tensorflow 在分布式訓(xùn)練上要超出 Pytorch(Facebook),還有tensorboard可視化工具, 但是 Tensorflow 的靜態(tài)計(jì)算圖使得在 RNN 上有一點(diǎn)點(diǎn)被動(dòng) (雖然它用其他途徑解決了), 不過用 PyTorch 的時(shí)候, 會(huì)對(duì)這種動(dòng)態(tài)的 RNN 有更好的理解。而且 Tensorflow 的高度工業(yè)化, 它的底層代碼很難看懂, Pytorch 好那么一點(diǎn)點(diǎn), 如果深入 PytorchAPI, 至少能比看 Tensorflow 多看懂一點(diǎn)點(diǎn) Pytorch 的底層在干啥。

五.Pytorch有哪些常用工具包?

  • torch :類似 NumPy 的張量庫,強(qiáng) GPU 支持 ;   
  • torch.autograd :基于 tape 的自動(dòng)區(qū)別庫,支持 torch 之中的所有可區(qū)分張量運(yùn)行;
  • torch.nn :為最大化靈活性未涉及、與 autograd 深度整合的神經(jīng)網(wǎng)絡(luò)庫;
  • torch.optim:與 torch.nn 一起使用的優(yōu)化包,包含 SGD、RMSProp、LBFGS、Adam 等標(biāo)準(zhǔn)優(yōu)化方式;
  • torch.multiprocessing: python 多進(jìn)程并發(fā),進(jìn)程之間 torch Tensors 的內(nèi)存共享;
  • torch.utils:數(shù)據(jù)載入器。具有訓(xùn)練器和其他便利功能; 
  • torch.legacy(.nn/.optim) :處于向后兼容性考慮,從 Torch 移植來的 legacy 代碼;

關(guān)于一文告訴你為選擇pytorch問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI