本人學習pytorch主要參考官方文檔和 莫煩Python中的pytorch視頻教程泡躯。
后文主要是對pytorch官網(wǎng)的文檔的總結国葬。
pytorch基礎庫
import torch
import torchvision
pytorch矩陣創(chuàng)建
#生成全0矩陣
x = torch.empty(5, 3)
print(x)
tensor([[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000]])
#生成全0矩陣并確定數(shù)據(jù)類型
x = torch.zeros(5, 3, dtype=torch.long)
print(x)
tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
#生成隨機矩陣
x = torch.rand(5, 3)
print(x)
tensor([[0.8699, 0.0466, 0.7531],
[0.4607, 0.2218, 0.4715],
[0.7544, 0.9102, 0.6546],
[0.4535, 0.6450, 0.4187],
[0.3994, 0.5950, 0.7166]])
#生成固定矩陣
x = torch.tensor([5.5, 3])
print(x)
tensor([5.5000, 3.0000])
#生成與x大小相同的隨機矩陣
x = torch.randn_like(x, dtype=torch.float)
print(x)
tensor([0.2306, 1.3089])
#獲取矩陣大小
print(x.size())
#實際輸出格式是列表
torch.Size([2])
![image.png](https://upload-images.jianshu.io/upload_images/6201834-9d80c623bf088c64.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
基礎矩陣運算
y = torch.rand(5, 3)
x = torch.rand(5, 3)
#加法
print(x + y)
print(torch.add(x, y))
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
y.add_(x)
print(y)
#帶有"_"的方法會修改x般渡。如 x.copy_(y), x.t_()等坪仇。
數(shù)據(jù)截取和改變維度
#數(shù)據(jù)切片的方法和numpy一樣
x = torch.rand(4, 4)
print(x[:, 1])
#改變數(shù)據(jù)維數(shù)
y = x.view(16)
z = x.view(-1, 8) # -1表示該維度由其他維度計算得到,最多只能有一個-1
print(x.size(), y.size(), z.size())
# torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])
獲取torch數(shù)據(jù)內(nèi)容
#對于僅有一個元素的使用item獲取
x = torch.randn(1)
print(x)
print(x.item())
torch與numpy格式轉(zhuǎn)化
a = torch.ones(5)
b = a.numpy()
print(b)
# [ 1. 1. 1. 1. 1.]
a = np.ones(5)
b = torch.from_numpy(a)
print(b)
# tensor([1., 1., 1., 1., 1.], dtype=torch.float64)
GPU使用
# 使用``torch.device`` 將tensors移動到GPU
if torch.cuda.is_available(): #確定cuda是否可用
device = torch.device("cuda") # 一個cuda設備對象
y = torch.ones_like(x, device=device) # 在GPU上創(chuàng)建一個tensor
x = x.to(device) # 將數(shù)據(jù)一定到cuda上朽合,也可以使用 ``.to("cuda")``
z = x + y
print(z)
print(z.to("cpu", torch.double)) # 通過``.to`` 將數(shù)據(jù)轉(zhuǎn)移到CPU并顯示