本文參考PyTorch官網(wǎng)的教程,分為五個(gè)基本模塊來(lái)介紹PyTorch。為了避免文章過(guò)長(zhǎng),這五個(gè)模塊分別在五篇博文中介紹。
Part1:PyTorch簡(jiǎn)單知識(shí)
Part2:PyTorch的自動(dòng)梯度計(jì)算
Part3:使用PyTorch構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)
Part4:訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)分類(lèi)器
Part5:數(shù)據(jù)并行化
本文是關(guān)于Part1的內(nèi)容。
Part1:PyTorch簡(jiǎn)單知識(shí)
PyTorch是一個(gè)基于Python的科學(xué)計(jì)算框架,用于進(jìn)行深度學(xué)習(xí)相關(guān)研究。對(duì)于Python語(yǔ)言的入門(mén),可以參考之前的兩篇介紹Python&Numpy的博客。分別是Python& Numpy 教程(上) 和Python & Numpy 教程(下)。這里我們就直接介紹PyTorch中的基本操作。
1 Tensors
Tensors與numpy中的ndarray類(lèi)似,但是Tensors支持GPU運(yùn)算。首先來(lái)做一些簡(jiǎn)單的例子。
導(dǎo)入基本的package:
構(gòu)建一個(gè)5*3的未初始化的矩陣:
x = torch.Tensor(5, 3) print(x)
構(gòu)建一個(gè)隨機(jī)初始化矩陣:
x = torch.rand(5, 3) print(x)
獲取矩陣的size:
print(x.size())
注意,torch.Size實(shí)際上是一個(gè)tuple,所以它支持相同的運(yùn)算。
2 運(yùn)算(Operations)
運(yùn)算可以使用多種語(yǔ)法表示,我們以加法為例子來(lái)說(shuō)明。
加法:語(yǔ)法1
y = torch.rand(5, 3) print(x + y)
加法:語(yǔ)法2
print(torch.add(x, y))
加法:給定輸出的tensor
result = torch.Tensor(5, 3) torch.add(x, y, out=result) print(result)
加法:原地進(jìn)行(in-place)的加法
# adds x to y y.add_(x) print(y)
注意,任何原地改變tensor的運(yùn)算后邊會(huì)后綴一個(gè)“_”,例如:x.copy_(y),x.t_(),會(huì)改變x的值。
你可以使用標(biāo)準(zhǔn)的numpy方式的索引。
print(x[:, 1])
3 NumpyBridge
將torch的Tensor轉(zhuǎn)換為numpy的array,反之亦然。
torch的Tensor和numpy的array分享底層的內(nèi)存地址,所以改變其中一個(gè)就會(huì)改變另一個(gè)。
將torch Tensor轉(zhuǎn)換為numpy array
a = torch.ones(5) print(a)
b = a.numpy() print(b)
觀察numpy array的值怎樣改變。
a.add_(1) print(a) print(b)
將numpy array 轉(zhuǎn)換為torch Tensor
看一下改變numpy array的值是怎樣同時(shí)改變torch Tensor的。
import numpy as np a = np.ones(5) b = torch.from_numpy(a) np.add(a, 1, out=a) print(a) print(b)
CPU上的所有Tensors(除了CharTensor)支持到Numpy的雙向轉(zhuǎn)換。
4 CUDA Tensors
通過(guò)使用 .cuda 函數(shù),Tensors可以被移動(dòng)到GPU。
# let us run this cell only if CUDA is available if torch.cuda.is_available(): x = x.cuda() y = y.cuda() x + y
責(zé)任編輯:xj
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7322瀏覽量
94282 -
pytorch
+關(guān)注
關(guān)注
2文章
813瀏覽量
14781
發(fā)布評(píng)論請(qǐng)先 登錄
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中需避免的 7 個(gè)常見(jiàn)錯(cuò)誤與局限性
學(xué)習(xí)物聯(lián)網(wǎng)怎么入門(mén)?
摩爾線(xiàn)程發(fā)布Torch-MUSA v2.1.1版本
Arm方案 基于Arm架構(gòu)的邊緣側(cè)設(shè)備(樹(shù)莓派或 NVIDIA Jetson Nano)上部署PyTorch模型
ARM入門(mén)學(xué)習(xí)方法分享
Nordic收購(gòu) Neuton.AI 關(guān)于產(chǎn)品技術(shù)的分析
跟老齊學(xué)Python:從入門(mén)到精通
摩爾線(xiàn)程發(fā)布Torch-MUSA v2.0.0版本 支持原生FP8和PyTorch 2.5.0
海思SS626開(kāi)發(fā)板
邊緣AI新突破:MemryX AI加速卡與RK3588打造高效多路物體檢測(cè)方案
使用OpenVINO? 2021.4將經(jīng)過(guò)訓(xùn)練的自定義PyTorch模型加載為IR格式時(shí)遇到錯(cuò)誤怎么解決?
如何在Arm Ethos-U85上使用ExecuTorch
操作指南:pytorch云服務(wù)器怎么設(shè)置?
深度學(xué)習(xí)入門(mén):簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的構(gòu)建與實(shí)現(xiàn)
小安派BW21-CBV-Kit入門(mén)教程:中斷控制LED
基于PyTorch的深度學(xué)習(xí)入門(mén)教程之PyTorch簡(jiǎn)單知識(shí)
評(píng)論