tensorflow
人工智能研究所在頭條上的第一篇文章介紹的是tensorflow,tensorflow是Google旗下的開源深度學習框架,我們在往期的分享中,也介紹了其相關方面的文章,從安裝到基礎的CNN卷積神經網絡到數字識别與圖片分類等等,随着科技的發展,其深度學習框架也越來越成熟,Facebook旗下的pytorch便是在衆多框架中脫穎而出的一個優秀的深度學習框架。
pytorch
什麼是 PyTorch?PyTorch 是一個基于Python 的開源深度學習庫,它有助于構建深度學習模型并在各種應用程序中使用它們。但這不僅僅是另一個深度學習庫。這是一個科學計算包,專門用于張量計算、自動微分和 GPU 加速。由于這些原因,PyTorch 是最受歡迎的深度學習庫之一,與 Keras 和 TensorFlow等開源深度學習庫競争,讓大家津津樂道的是誰是最好的開源深度學習庫。PyTorch的前身是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多内容,不僅更加靈活,支持動态圖,而且提供了Python接口。它是由Torch7團隊開發,是一個以Python優先的深度學習框架,不僅能夠實現強大的GPU加速,同時還支持動态神經網絡。
PyTorch既可以看作加入了GPU支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經網絡。除了Facebook外,它已經被Twitter、CMU和Salesforce等機構采用
PyTorch由于其 Pythonic 性質和易于擴展性(即實現自定義層類型、網絡架構等),在研究社區中特别受歡迎。PyTorch 使用Tensor作為其核心數據結構,類似于 Numpy 數組。有了适當的軟件和硬件,張量可以加速各種數學運算。在深度學習中大量執行這些操作時,速度會産生巨大的差異。PyTorch 與 Python 類似,側重于易用性,即使具有非常基礎的編程知識的用戶也可以在其項目中使用深度學習
PyTorch是 基于 Lua 的科學計算框架 Torch。在 PyTorch 和 Keras/TensorFlow 之前,Caffe 和 Torch 等深度學習包是最受歡迎的。然而,随着深度學習開始徹底改變計算機科學的幾乎所有領域,開發人員和研究人員需要一個高效、易于使用的庫來構建、訓練和評估。 Python 和 R 是數據科學家和機器學習最流行的兩種編程語言,因此研究人員希望在其 Python 生态系統中使用深度學習算法是很自然的。
PyTorch 解決了研究人員在使用 Keras 和 TensorFlow 時遇到的許多問題。雖然 Keras 非常易于使用,另一方面,TensorFlow也可以處理類似的事前,但它們不是 Pythonic,而且通常很難梳理,PyTorch 通過創建一個 Pythonic 且易于定制的 API 解決了這些問題,允許實現新的層類型、優化器和新穎的架構。但是随着 PyTorch 1.x 和 TensorFlow 2.x 發布以來,各個庫的 API 基本上已經融合。 PyTorch 和 TensorFlow 現在實現了基本相同的功能,并提供 API 和函數調用來完成相同的事情,這裡不要糾結說那個是最好的深度學習開源框架。
PyTorch 在上述所有這些指标上的表現都非常出色。“ pythonic ”編碼風格使其易于學習和使用。GPU 加速,支持分布式計算和自動梯度計算有助于從前向表達式開始自動執行後向傳遞。
當然,由于 Python,它面臨着運行緩慢的風險,但高性能 C API (libtorch) 消除了這種速度的差異。
PyTorch 庫概述現在我們已經了解了 PyTorch 以及它的獨特之處,讓我們來看看 PyTorch 項目的基本管道信息。下圖描述了一個典型的工作流程以及與每個步驟相關的重要模塊。
基本 PyTorch 工作流程
PyTorch 庫深度學習流程1. 數據加載和處理
任何深度學習項目的第一步都是處理數據加載和處理。PyTorch 通過torch.utils.data提供相同的實用程序。該模塊中的兩個重要類是Dataset和DataLoader。如果我們可以訪問多台機器或 GPU,我們也可以使用torch.nn.DataParallel和torch.distributed。
2. 構建神經網絡
torch.nn模塊用于創建神經網絡。它提供了所有常見的神經網絡層,如全連接層、卷積層、激活和損失函數等。一旦創建了網絡架構并且準備好将數據饋送到網絡,我們就需要更新權重和偏差的,以便網絡開始學習。這些實用程序在torch.optim模塊中提供。類似地,對于反向傳遞期間所需的自動微分,我們使用torch.autograd模塊。
說到自動微分,PyTorch 讓訓練神經網絡變得非常容易,PyTorch 能夠:
第 4 步始終是手動實施的最乏味和最耗時的步驟。幸運的是,PyTorch 會自動處理這一步。
3. 模型推斷和兼容性
模型經過訓練後,可用于預測測試,甚至測試新數據集的輸出。這個過程被稱為模型推理。
PyTorch 還提供TorchScript,可用于獨立于 Python 運行時運行模型。這可以被認為是一個虛拟機,其指令主要針對張量。還可以将使用 PyTorch 訓練的模型轉換為 ONNX 等格式,這樣就可以在其他 DL 框架(例如 MXNet、CNTK、Caffe2)中使用這些模型。還可以将onnx模型轉換為 Tensorflow。
PyTorch 将多維數組表示為“張量”。張量構成了神經網絡的基本構建塊
PyTorch 将數據表示為稱為張量的多維、類似 NumPy 的數組。張量存儲神經網絡的輸入、隐藏層表示和輸出。張量隻是矩陣的一個奇特名稱。如果您熟悉 NumPy 數組,那麼理解和使用 PyTorch 張量将非常容易。标量值由 0 維張量表示。類似地,列/行矩陣使用一維張量等表示,在pytorch中,張量是一個重要的概念,我們後期将會分享類似的張量處理。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!