PyTorch是一個基于Torch庫的開源Python機器學習庫,主要應用于人工智能領域,如計算機視覺和自然語言處理。它由Meta Platforms的人工智能研究團隊開發,現屬于Linux基金會項目。PyTorch既可以看作加入了GPU支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經網絡。除了Facebook外,它已經被Twitter、CMU和賽富時等機構采用。PyTorch提供了兩個高級特性:動態計算圖和自動求導。它還被用于許多深度學習軟件的開發,包括特斯拉自動駕駛、優步的Pyro、Hugging Face的Transformers、PyTorch Lightning和Catalyst等。
歷史沿革
PyTorch最初由Facebook的人工智能研究團隊開發,經過多年的發展,已經成為了最熱門的深度學習框架之一。PyTorch的前身是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內容,不僅更加靈活,支持動態圖,而且提供了Python接口。它是由Torch7團隊開發,是一個以Python優先的深度學習框架,不僅能夠實現強大的GPU加速,同時還支持動態神經網絡。2016年,Facebook人工智能研究院(FAIR)在Torch的基礎上發布了PyTorch的第一個版本,標志著PyTorch的正式誕生。
它是一個基于Python的可續計算包,提供兩個高級功能:
2、包含自動求導系統的深度神經網絡。2022年9月,馬克·扎克伯格親自宣布,PyTorch 基金會已新鮮成立,并歸入 Linux 基金會旗下。
版本更新
2020年1月,PyTorch迎來了最新的1.4版。更新的重點是增加了很多重要的新特性,包括給用戶提供Build級別的移動端定制化支持、增加分布式模型并行訓練、讓Java程序能夠運行TorchScript等。此外還有JIT、C++、分布式訓練、Eager前端、PyTorch Mobile等方面的功能改進和Bug修復。值得注意的是,本次PyTorch更新是最后一個支持Python2的版本,同時也是最后一個支持C++11的版本。官方提示說,用戶應當開始遷移到Python,并使用C++14開始編譯工作。繼TensorFlow更新后,PyTorch也迎來了最新的 1.4 版。本次更新的重點是增加了很多重要的新特性,包括給用戶提供Build級別的移動端定制化支持、增加分布式模型并行訓練、讓Java程序能夠運行TorchScript等。此外還有JIT、C++、分布式訓練、Eager前端、PyTorch Mobile等方面的功能改進和Bug修復。本次PyTorch 更新是最后一個支持Python2的版本,同時也是最后一個支持C++11的版本。官方提示說,用戶應當開始遷移到Python,并使用C++14開始編譯工作。
運行環境
PyTorch已兼容Windows(CUDA,CPU)、Mac OS(CPU)、Linux(CUDA,ROCm,CPU)。
優點
PyTorch是相當簡潔且高效快速的框架,設計追求最少的封裝,設計符合人類思維,它讓用戶盡可能地專注于實現自己的想法。與谷歌的TensorFlow類似,FAIR的支持足以確保PyTorch獲得持續的開發更新。PyTorch作者親自維護的論壇供用戶交流和求教問題,入門簡單。
基礎環境
一臺PC設備、一張高性能英偉達顯卡(可選)、Ubuntu系統。
環境搭建
安裝Pytorch。PyTorch的安裝十分簡單,根據PyTorch官網,對系統選擇和安裝方式等靈活選擇即可。這里以anaconda為例。Pytorch的安裝經過了幾次變化,請大家以官網的安裝命令為準。另外需要說明的就是在1.2版本以后,Pytorch只支持cuda 9.2以上了,所以需要對cuda進行升級,部分顯卡都可以用,包括筆記本的MX250也是可以順利升級到cuda 10.1。此處使用Conda包管理器。注意:如果使用鏡像站,請刪除“-c pytorch”;安裝CUDA(即GPU)版本時注意安裝CUDNN運行庫。驗證輸入Python 進入。配置Jupyter Notebook。新建的環境是沒有安裝安裝ipykernel的所以無法注冊到Jupyter Notebook中,所以先要準備環境。下一步:定制 Jupyter Notebook。打開文件,修改。測試。至此,Pytorch 的集成開發環境安裝完成,可以在開始菜單中打開Jupyter Notebook 在New 菜單中創建文件時選擇Pytorch for Deeplearning 創建PyTorch的相關開發環境了。
PyTorch tensors
PyTorch定義了一個名為張量(torch.Tensor) 的類別來儲存和操作同構多維矩形數字陣列。 PyTorch張量與numpy陣列類似,但也可以在支援 CUDA 的 英偉達 GPU 上運作。 PyTorch 也一直在開發對其他 GPU 平臺的支持,例如 AMD 的 ROCm 和 Apple 的Metal Framework。張量是 PyTorch 中的核心數據抽象,PyTorch 支援各種張量子類型。通常地,一維張量稱為向量(vector),二維張量稱為矩陣(matrix)。張量的數據類型包括:torch.bool、torch.int8、torch.uint8、torch.int16、torch.int32、torch.int64、torch.half、torch.float、torch.double、torch.bfloat。
PyTorch神經網絡
神經網絡由對數據執行操作的層/模塊組成。 torch.nn 命名空間提供了使用者需要的所有構建塊來構建自己的神經網絡。PyTorch 中的每個模塊都對應nn.模塊。 神經網絡本身是由其他模塊(層)組成的模塊。這種嵌套結構允許使用者輕松構建并管理復雜的架構。神經網絡中的許多層都是參數化的,即具有相關的權重以及在訓練期間優化的偏差。自動子類化跟蹤模型對象中定義的所有字段,并生成所有參數可使用模型或方法訪問。激活函數torch.nn.Module具有封裝所有主要內容的對象激活功能,包括 ReLU 及其許多變體、Tanh、 Hardtanh、sigmoid 等。PyTorch模型常見圖層類型包括線性層、卷積層和循環層。線性層是最基本的神經網絡層類型,卷積層旨在處理高度空間相關性,循環層適用于順序數據。
參考資料 >
PyTorch 1.4最新版放出:支持Python2的最后一版,支持分布式模型并行、Java程序、移動端等多項新功能.新浪科技.2025-08-17