pytorch簡介
一.Pytorch是什么?
Pytorch是torch的python版本,是由Facebook開源的神經網絡框架,專門針對 GPU 加速的深度神經網絡(DNN)編程。Torch 是一個經典的對多維矩陣數(shù)據進行操作的張量(tensor )庫,在機器學習和其他數(shù)學密集型應用有廣泛應用。與Tensorflow的靜態(tài)計算圖不同,pytorch的計算圖是動態(tài)的,可以根據計算需要實時改變計算圖。但由于Torch語言采用 Lua,導致在國內一直很小眾,并逐漸被支持 Python 的 Tensorflow 搶走用戶。作為經典機器學習庫 Torch 的端口,PyTorch 為 Python 語言使用者提供了舒適的寫代碼選擇。
二.為什么選擇 Pytorch?
1.簡潔:
PyTorch的設計追求最少的封裝,盡量避免重復造輪子。不像 TensorFlow 中充斥著session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch 的設計遵循tensor→variable(autograd)→nn.Module 三個由低到高的抽象層次,分別代表高維數(shù)組(張量)、自動求導(變量)和神經網絡(層/模塊),而且這三個抽象之間聯(lián)系緊密,可以同時進行修改和操作。 簡潔的設計帶來的另外一個好處就是代碼易于理解。PyTorch的源碼只有TensorFlow的十分之一左右,更少的抽象、更直觀的設計使得PyTorch的源碼十分易于閱讀。
2.速度:
PyTorch 的靈活性不以速度為代價,在許多評測中,PyTorch 的速度表現(xiàn)勝過 TensorFlow和Keras 等框架??蚣艿倪\行速度和程序員的編碼水平有極大關系,但同樣的算法,使用PyTorch實現(xiàn)的那個更有可能快過用其他框架實現(xiàn)的。
3.易用:
PyTorch 是所有的框架中面向對象設計的最優(yōu)雅的一個。PyTorch的面向對象的接口設計來源于Torch,而Torch的接口設計以靈活易用而著稱,Keras作者最初就是受Torch的啟發(fā)才開發(fā)了Keras。PyTorch繼承了Torch的衣缽,尤其是API的設計和模塊的接口都與Torch高度一致。PyTorch的設計最符合人們的思維,它讓用戶盡可能地專注于實現(xiàn)自己的想法,即所思即所得,不需要考慮太多關于框架本身的束縛。
4.活躍的社區(qū):
PyTorch 提供了完整的文檔,循序漸進的指南,作者親自維護的論壇 供用戶交流和求教問題。Facebook 人工智能研究院對 PyTorch 提供了強力支持,作為當今排名前三的深度學習研究機構,F(xiàn)AIR的支持足以確保PyTorch獲得持續(xù)的開發(fā)更新,不至于像許多由個人開發(fā)的框架那樣曇花一現(xiàn)。
三.PyTorch 的架構是怎樣的?
PyTorch(Caffe2) 通過混合前端,分布式訓練以及工具和庫生態(tài)系統(tǒng)實現(xiàn)快速,靈活的實驗和高效生產。PyTorch 和 TensorFlow 具有不同計算圖實現(xiàn)形式,TensorFlow 采用靜態(tài)圖機制(預定義后再使用),PyTorch采用動態(tài)圖機制(運行時動態(tài)定義)。PyTorch 具有以下高級特征:
- 混合前端:新的混合前端在急切模式下提供易用性和靈活性,同時無縫轉換到圖形模式,以便在C ++運行時環(huán)境中實現(xiàn)速度,優(yōu)化和功能。
- 分布式訓練:通過利用本地支持集合操作的異步執(zhí)行和可從Python和C ++訪問的對等通信,優(yōu)化了性能。
- Python優(yōu)先: PyTorch為了深入集成到Python中而構建的,因此它可以與流行的庫和Cython和Numba等軟件包一起使用。
- 豐富的工具和庫:活躍的研究人員和開發(fā)人員社區(qū)建立了豐富的工具和庫生態(tài)系統(tǒng),用于擴展PyTorch并支持從計算機視覺到強化學習等領域的開發(fā)。
- 本機ONNX支持:以標準ONNX(開放式神經網絡交換)格式導出模型,以便直接訪問與ONNX兼容的平臺,運行時,可視化工具等。
- C++前端:C++前端是PyTorch的純C++接口,它遵循已建立的Python前端的設計和體系結構。它旨在實現(xiàn)高性能,低延遲和裸機C++應用程序的研究。 使用GPU和CPU優(yōu)化的深度學習張量庫。
四.Pytorch 與 tensorflow 之間的差異在哪里?
上面也將了PyTorch 最大優(yōu)勢是建立的神經網絡是動態(tài)的, 對比靜態(tài)的 Tensorflow, 它能更有效地處理一些問題, 比如說 RNN 變化時間長度的輸出。各有各的優(yōu)勢和劣勢。兩者都是大公司發(fā)布的, Tensorflow(Google)宣稱在分布式訓練上下了很大的功夫, 那就默認 Tensorflow 在分布式訓練上要超出 Pytorch(Facebook),還有tensorboard可視化工具, 但是 Tensorflow 的靜態(tài)計算圖使得在 RNN 上有一點點被動 (雖然它用其他途徑解決了), 不過用 PyTorch 的時候, 會對這種動態(tài)的 RNN 有更好的理解。而且 Tensorflow 的高度工業(yè)化, 它的底層代碼很難看懂, Pytorch 好那么一點點, 如果深入 PytorchAPI, 至少能比看 Tensorflow 多看懂一點點 Pytorch 的底層在干啥。
五.Pytorch有哪些常用工具包?
- torch :類似 NumPy 的張量庫,強 GPU 支持 ;
- torch.autograd :基于 tape 的自動區(qū)別庫,支持 torch 之中的所有可區(qū)分張量運行;
- torch.nn :為最大化靈活性未涉及、與 autograd 深度整合的神經網絡庫;
- torch.optim:與 torch.nn 一起使用的優(yōu)化包,包含 SGD、RMSProp、LBFGS、Adam 等標準優(yōu)化方式;
- torch.multiprocessing: python 多進程并發(fā),進程之間 torch Tensors 的內存共享;
- torch.utils:數(shù)據載入器。具有訓練器和其他便利功能;
- torch.legacy(.nn/.optim) :處于向后兼容性考慮,從 Torch 移植來的 legacy 代碼;
到此這篇關于pytorch簡介的文章就介紹到這了,更多相關pytorch簡介內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
講清楚fit_transform()和transform()的區(qū)別及說明
這篇文章主要介紹了講清楚fit_transform()和transform()的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Python圖像處理實現(xiàn)兩幅圖像合成一幅圖像的方法【測試可用】
這篇文章主要介紹了Python圖像處理實現(xiàn)兩幅圖像合成一幅圖像的方法,結合實例形式分析了Python使用Image.blend()接口與Image.composite()接口進行圖像合成的相關操作技巧,需要的朋友可以參考下2019-01-01
數(shù)組保存為txt, npy, csv 文件, 數(shù)組遍歷enumerate的方法
今天小編就為大家分享一篇數(shù)組保存為txt, npy, csv 文件, 數(shù)組遍歷enumerate的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python如何使用seleniumwire接管Chrome查看控制臺中參數(shù)
文章介紹了如何使用Python的seleniumwire庫來接管Chrome瀏覽器,并通過控制臺查看接口參數(shù),本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2025-01-01
一文帶你深入理解Python的`functools.lru_cache`裝飾器
Python中的functools.lru_cache裝飾器是一個非常有用的裝飾器,它可以幫助我們優(yōu)化遞歸函數(shù),避免重復計算已經計算過的值,在這篇文章中,我們將探討?functools.lru_cache?的工作原理以及如何使用它,感興趣的朋友跟著小編一起來學習吧2023-07-07

