難以置信的簡單!10分鐘帶你入門AI開發庫PyTorch

2021-01-11 python大大

什麼是PyTorch?

PyTorch是一個基於Torch的Python機器學習庫。它類似於numpy但具有強大的GPU支持。它由Facebook的AI Research Group於2016年開發.PyTorch提供動態計算圖,以便您可以在autograd的幫助下隨時修改圖形。Pytorch在某些情況下比其他框架更快,但您將在後面的其他部分討論。

AI開發庫PyTorch

PyTorch的優點和缺點

好處

1. 簡單庫

PyTorch代碼很簡單。它很容易理解,您可以立即使用該庫。例如,請查看下面的代碼段:

PyTorch代碼很簡單

如上所述,您可以輕鬆定義網絡模型,無需經過多少培訓即可快速理解代碼。

2. 動態計算圖

Pytorch提供動態計算圖(DAG)。計算圖是一種在圖模型或理論(如節點和邊)中表達數學表達式的方法。節點將進行數學運算,並且邊緣是Tensor,它將被饋送到節點並在Tensor中攜帶節點的輸出。

DAG是一種圖形,可以保持任意形狀,並且能夠在不同的輸入圖形之間進行操作。每次迭代,都會創建一個新圖形。因此,可以使用相同的圖形結構或創建具有不同操作的新圖形,或者我們可以將其稱為動態圖形。

3. 更好的性能

社區和研究人員,基準和比較框架,以了解哪一個更快。深度學習框架和GPU上的GitHub repo 報告說,PyTorch在每秒處理的圖像方面比其他框架更快。

如下所示,使用vgg16和resnet152進行比較

vgg16
resnet152

4. 原生Python

PyTorch更基於python。例如,如果要訓練模型,可以使用本機控制流(例如循環和遞歸),而無需添加更多特殊變量或會話以便能夠運行它們。這對培訓過程非常有幫助。

Pytorch還實現了Imperative Programming,更靈活。因此,可以在計算過程中列印出張量值。

使用PyTorch進行圖像分類

學習深度學習基礎知識的一種流行方法是使用MNIST數據集。它是深度學習中的"Hello World"。該數據集包含0-9的手寫數字,總共60,000個訓練樣本和10,000個測試樣本,這些樣本已標記為28x28像素。

圖像分類

圖像分類

步驟1)預處理數據

在開始培訓過程之前,您需要了解數據。在第一步中,您將使用torchvision模塊加載數據集。Torchvision將加載數據集並根據網絡的適當要求(例如形狀和規範化圖像)轉換圖像。

變換函數將圖像轉換為張量並對值進行標準化。函數torchvision.transforms.MNIST將下載目錄中的數據集(如果它不可用),必要時設置數據集以進行培訓並執行轉換過程。

要顯示數據集,可以使用data_iterator獲取下一批圖像和標籤。您可以使用matplot繪製這些圖像及其相應的標籤。正如您在下面看到的我們的圖像和標籤。

步驟2)網絡模型配置

現在,您將為圖像分類創建一個簡單的神經網絡。在這裡,我們向您介紹在PyTorch中創建網絡模型的另一種方法。我們將使用nn.Sequential來創建序列模型,而不是創建nn.Module的子類。

這是我們網絡模型的輸出

網絡解釋

1. 順序是第一層是Conv2D層,輸入形狀為1,輸出形狀為10,內核大小為5

2. 接下來,一個MaxPool2D圖層

3. ReLU激活功能

4. Dropout圖層可以降低概率值。

5. 然後是第二個Conv2d,輸入形狀為10,最後一層,輸出形狀為20,內核大小為5

6. 接下來是MaxPool2d層

7. ReLU激活功能。

8. 之後,在將張量饋入"線性"圖層之前,將展平張量

9. 線性層將使用softmax激活函數在第二個線性層映射輸出

步驟3)訓練模型

在開始培訓過程之前,需要設置標準和優化器功能。對於標準,您將使用CrossEntropyLoss。對於Optimizer,您將使用SGD,學習率為0.001,動量為0.9。

import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

正向過程將採用輸入形狀並將其傳遞給第一個conv2d層。然後從那裡,它將被輸入maxpool2d並最終進入ReLU激活功能。在第二個conv2d層中將發生相同的過程。之後,輸入將被重新整形為(-1,320)並輸入fc層以預測輸出。

現在,您將開始培訓過程。您將遍歷我們的數據集2次或使用2的紀元,並列印每2000批次的當前損失。

枚舉器將獲得下一個輸入元組和相應的標籤。在我們將輸入提供給網絡模型之前,我們需要清除之前的漸變。這是必需的,因為在後向過程(反向傳播過程)之後,將累積梯度而不是被替換。然後,我們將根據預期輸出的預測輸出計算損失。之後,將進行反向傳播以計算梯度,最後,將更新參數。

這是培訓過程的輸出

[1, 1] loss: 0.002 [1, 1001] loss: 2.302 [1, 2001] loss: 2.295 [1, 3001] loss: 2.204 [1, 4001] loss: 1.930 [1, 5001] loss: 1.791 [1, 6001] loss: 1.756 [1, 7001] loss: 1.744 [1, 8001] loss: 1.696 [1, 9001] loss: 1.650 [1, 10001] loss: 1.640 [1, 11001] loss: 1.631 [1, 12001] loss: 1.631 [1, 13001] loss: 1.624 [1, 14001] loss: 1.616 [2, 1] loss: 0.001 [2, 1001] loss: 1.604 [2, 2001] loss: 1.607 [2, 3001] loss: 1.602 [2, 4001] loss: 1.596 [2, 5001] loss: 1.608 [2, 6001] loss: 1.589 [2, 7001] loss: 1.610 [2, 8001] loss: 1.596 [2, 9001] loss: 1.598 [2, 10001] loss: 1.603 [2, 11001] loss: 1.596 [2, 12001] loss: 1.587 [2, 13001] loss: 1.596 [2, 14001] loss: 1.603

步驟4)測試模型

模型ce shi

訓練模型後,您需要使用其他圖像集進行測試或評估。我們將為test_loader使用迭代器,它將生成一批將傳遞給訓練模型的圖像和標籤。將顯示預測輸出並與預期輸出進行比較。

訓練結果

不知不覺,就學完了Pytorch的快速入門。

作為本章結束語,和標題呼應,是不是真的難以置信的簡單啊!

相關焦點

  • 5分鐘!用Java實現目標檢測|PyTorch
    魚羊 編輯整理量子位 報導 | 公眾號 QbitAI編者按:作為一個Java開發者,你是否曾為在PyTorch上部署模型而苦惱?這篇來自AWS軟體工程師的投稿,結合實例,詳細介紹了DJL這個為Java開發者設計的深度學習庫:5分鐘,你就能在PyTorch上,用Java實現目標檢測。
  • 5分鐘!用Java實現目標檢測 | PyTorch
    這篇來自AWS軟體工程師的投稿,結合實例,詳細介紹了DJL這個為Java開發者設計的深度學習庫:5分鐘,你就能在PyTorch上,用Java實現目標檢測。5分鐘,用Java實現目標檢測文 / 知乎用戶@LankingPyTorch在深度學習領域中的應用日趨廣泛,得益於它獨到的設計。
  • PyTorch 深度學習官方入門中文教程 pdf 下載|PyTorchChina
    PyTorch是一個基於Torch的Python開源機器學習庫,用於自然語言處理等應用程式。它主要由Facebookd的人工智慧小組開發,不僅能夠 實現強大的GPU加速,同時還支持動態神經網絡,這一點是現在很多主流框架如TensorFlow都不支持的。
  • 《PyTorch中文手冊》來了
    本書提供PyTorch快速入門指南並與最新版本保持一致,其中包含的 Pytorch 教程全部通過測試保證可以成功運行。PyTorch 是一個深度學習框架,旨在實現簡單靈活的實驗。這是一本開源的書籍,目標是幫助那些希望和使用 PyTorch 進行深度學習開發和研究的朋友快速入門,其中包含的 Pytorch 教程全部通過測試保證可以成功運行。
  • 一文總結數據科學家常用的Python庫(下)
    TensorFlow提供簡單的模型構建,強大的機器學習生成,以及強大的實驗工具和庫。TensorFlow提供多個抽象級別供您根據需要進行選擇。它通過使用高級Keras API用於構建和訓練模型,這使得TensorFlow入門和機器學習變得容易。瀏覽此連結以查看安裝過程:https://www.tensorflow.org/install。
  • 還不會使用PyTorch框架進行深度學習的小夥伴,看過來
    為了使用 PyTorch,你需要先訪問其官網並安裝 PyTorch。如果你正在使用 Conda,你可以通過運行以下簡單命令來安裝 PyTorch:為了定義 PyTorch 張量,首先需要導入 torch 包。PyTorch 允許你定義兩種類型的張量,即 CPU 和 GPU 張量。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    軟體開發者畢竟不是科學家,很多時候簡單易學易用是程式設計師選擇的第一要素。目前,兩個主要的深度學習庫Keras和Pytorch獲得了大量關注,主要是因為它們的使用比較簡單。但比起Keras具有更大的靈活性和控制能力,但又不必進行任何複雜的聲明式編程,如果想深入了解機器學習pytorch庫就是不錯的選擇。二、應用領域keras比較適合入門級學習,如程式設計師、系統開發者等非專業開發者,結合其後端(tensorflow等)部署,在工業領域在目前應用範圍廣。
  • 十分鐘輕鬆入門AI利器PyTorch
    PyTorch快速入門概述ddddPyTorch快速入門本教程通過十分鐘快速入門和代碼實踐帶你走入python的AI世界。讓我們看一個如何定義模型和計算正向傳遞的示例:# N is batch size; D_in is input dimension;# H is the dimension of the hidden layer; D_out is output dimension.N,D_in,H,D_out=32,100,50,10# Create random
  • 60分鐘入門深度學習工具PyTorch
    它是一個簡單的前饋神經網絡,它接受一個輸入,然後一層接著一層的輸入,直到最後得到結果。在nn包中有幾種不同的損失函數.一個簡單的損失函數是:nn.MSELoss,它計算輸入和目標之間的均方誤差。weight=weightlearning_rategradient我們可以使用簡單的Python代碼實現這個規則。
  • Keras vs PyTorch:誰是第一深度學習框架?
    兩大框架的連結:  Keras:https://github.com/keras-team/keras (https://keras.io/)  PyTorch:https://github.com/pytorch/pytorch  你想學習深度學習嗎?
  • PyTorch v1.1 重大更新,TensorBoard已加入豪華套餐
    由於是原生支持,只需要一句簡單的「from torch.utils.tensorboard import SummaryWriter」指令就可以調用。JIT 編譯器:針對即時彙編進行了多項改進,包括多項 bug 修復,增加了 TorchScript 中的多項功能(比如支持辭典、用戶自定義類以及屬性)。
  • 重磅| Torch7團隊開源PyTorch:Python優先的深度學習框架
    官網:http://pytorch.orgGitHub:https://github.com/pytorch/pytorchPyTorch 是一個 Python 軟體包,其提供了兩種高層面的功能:使用強大的 GPU 加速的 Tensor 計算(類似 numpy)構建於基於 tape 的 autograd 系統的深度神經網絡如有需要,你也可以復用你最喜歡的
  • 從4個方面介紹Keras和Pytorch,並給你選擇其中一個學習庫的理由
    全文共3376字,預計學習時長7分鐘對許多科學家、工程師和開發人員而言,TensorFlow是他們的第一個深度學習框架。TensorFlow 1.0於2017年2月發布;但客觀來說,它對用戶不是非常友好。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • 華為雲應用編排,手把手教您完成pytorch代碼部署
    本文將以一個使用了pytorch的demo代碼pytorch-classify為例,通過華為雲上的容器服務一鍵式部署, 5 分鐘完成免費的雲上pytorch代碼的部署。傳統部署方式首先是準備環境。先有個伺服器,這臺伺服器需要能夠被外部訪問。
  • 雲計算學習:用PyTorch實現一個簡單的分類器
    回想了一下自己關於 pytorch 的學習路線,一開始找的各種資料,寫下來都能跑,但是卻沒有給自己體會到學習的過程。有的教程一上來就是寫一個 cnn,雖然其實內容很簡單,但是直接上手容易讓人找不到重點,學的雲裡霧裡。有的教程又淺嘗輒止,師傅領到了門檻跟前,總感覺自己還沒有進門,教程就結束了。
  • Facebook 開源 3D 深度學習函數庫 PyTorch3D
    原標題:Facebook開源3D深度學習函數庫PyTorch3D來源:開源中國Facebook近日開源了將PyTorch用於3D深度學習的函數庫PyTorch3D,這是一個高度模塊化且經過優化的庫,具備獨有的功能,旨在通過PyTorch簡化3D深度學習。
  • PyTorch上也有Keras了,訓練模型告別Debug,只需專注數據和邏輯
    在這張圖中,灰色部分代表Lightning能自動完成的部分,而藍色的部分則能夠根據使用者的需求,被定義成任意底層模型,可以是你自己的新模型,也可以是預訓練模型,fast.ai架構等等。舉幾個例子好了。比如說,梯度下降。
  • 如何用PyTorch訓練圖像分類器
    你可以將它們拼接在一起以構建自己的Python腳本,或從GitHub下載。這些Notebook是基於Udacity的PyTorch課程的。如果你使用雲端虛擬機進行深度學習開發並且不知道如何遠程打開notebook,請查看我的教程。組織訓練數據集PyTorch希望數據按文件夾組織,每個類對應一個文件夾。
  • 想入門人工智慧? 這些優質的 AI 資源絕對不要錯過
    與其他所有學習一樣,在投入大量精力和金錢後,你當然不希望發現浪費了時間卻沒學到應獲得的技能。那麼對於想入門人工智慧的人群來說,應該從哪兒開始呢?本文列出了一些優質AI學習資源。希望在閱讀本文後,能幫助你順利開啟AI學習之旅。