本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。
Part1:PyTorch簡單知識
Part2:PyTorch的自動梯度計算
Part3:使用PyTorch構建一個神經網絡
Part4:訓練一個神經網絡分類器
Part5:數據并行化
本文是關于Part1的內容。
Part1:PyTorch簡單知識
PyTorch是一個基于Python的科學計算框架,用于進行深度學習相關研究。對于Python語言的入門,可以參考之前的兩篇介紹Python&Numpy的博客。分別是Python& Numpy 教程(上) 和Python & Numpy 教程(下)。這里我們就直接介紹PyTorch中的基本操作。
1 Tensors
Tensors與numpy中的ndarray類似,但是Tensors支持GPU運算。首先來做一些簡單的例子。
導入基本的package:
構建一個5*3的未初始化的矩陣:
x = torch.Tensor(5, 3) print(x)
構建一個隨機初始化矩陣:
x = torch.rand(5, 3) print(x)
獲取矩陣的size:
print(x.size())
注意,torch.Size實際上是一個tuple,所以它支持相同的運算。
2 運算(Operations)
運算可以使用多種語法表示,我們以加法為例子來說明。
加法:語法1
y = torch.rand(5, 3) print(x + y)
加法:語法2
print(torch.add(x, y))
加法:給定輸出的tensor
result = torch.Tensor(5, 3) torch.add(x, y, out=result) print(result)
加法:原地進行(in-place)的加法
# adds x to y y.add_(x) print(y)
注意,任何原地改變tensor的運算后邊會后綴一個“_”,例如:x.copy_(y),x.t_(),會改變x的值。
你可以使用標準的numpy方式的索引。
print(x[:, 1])
3 NumpyBridge
將torch的Tensor轉換為numpy的array,反之亦然。
torch的Tensor和numpy的array分享底層的內存地址,所以改變其中一個就會改變另一個。
將torch Tensor轉換為numpy array
a = torch.ones(5) print(a)
b = a.numpy() print(b)
觀察numpy array的值怎樣改變。
a.add_(1) print(a) print(b)
將numpy array 轉換為torch Tensor
看一下改變numpy array的值是怎樣同時改變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的雙向轉換。
4 CUDA Tensors
通過使用 .cuda 函數,Tensors可以被移動到GPU。
# let us run this cell only if CUDA is available if torch.cuda.is_available(): x = x.cuda() y = y.cuda() x + y
責任編輯:xj
-
數據
+關注
關注
8文章
6888瀏覽量
88826 -
pytorch
+關注
關注
2文章
803瀏覽量
13145
發布評論請先 登錄
相關推薦
評論