什麼是PyTorch?
PyTorch是一個開源的Python機器學習庫,Python為基礎,底層由C++實現,應用於人工智慧領域,如自然語言處理。
它最初由Facebook的人工智慧研究團隊於2017開發,為深度學習常用框架

PyTorch安裝:
進入PyTorch 官網
https://pytorch.org/get-started/locally/

可以選擇要安裝的PyTorch版本、系統環境、安裝方式、CPU版本等等,選好這些後就會給你一串安裝的指令直接丟到終端機就可以安裝。
之後只要在程式碼輸入:
import torch
就可以順利引入
張量(tensors):
張量通常是指用來描述「純量、向量或張量」之間關係的「線性映射」,例如「內積、外積、線性映射」等都是張量 。
通常我們稱第零階張量(r=0)為純量,第一階張量 (r=1)為向量,第二階張量(r=2)則成為矩陣。
在PyTorch裡可以用張量來表示多階陣列
import torch
print(torch.Tensor([[1,2,3],[4,5,6]]))

張量特性:
1. 可以使用屬性shape或使用size()函數來觀察維度
x=torch.Tensor([[1,2,3],[4,5,6]])
print(x.shape)
print(x.size())

2. 可以傳入numpy array使它轉成張量
import torch
import numpy as np
print(torch.Tensor(np.array([[1,2,3],[4,5,6]])))

(基本上,他跟numpy array操作一模一樣,只是會有一些差別,其中常見差別為轉換維度)
3. 維度轉換:
一般numpy會使用reshape來轉換維度,但在pytorch裡是使用屬性view來轉換維度
x=torch.Tensor([[1,2,3],[4,5,6]])
x=x.view(6)
print(x.shape)
x=x.view(-1,2)
print(x.shape)

4. 可以使用屬性rand來取0~1隨機數(均勻分佈):
t=torch.rand(2,2)#取2X2維度
print(t)

張量實例:線性模型
現在我們使用pytorch來做一個線性回歸(y=ax+b),來算出斜率和截距
x = torch.Tensor([2,4])#建立2X4維張量
a = torch.rand(2, requires_grad =True)#隨機斜率
b = torch.rand(1, requires_grad =True)#隨機截距
print("a:",a)#作為起始迭代值
print("b:",b)#作為起始迭代值

y_pred = a*x + b #線性模型#建立真實值為[5,9]的張量
y_true = torch.Tensor([5,9])#建立損失函數(MSE)
loss =(torch.mean(y_ true - y_pred))**2
loss.backward()#反向傳播計算梯度
#利用grad屬性即可得到a張量的梯度
print(a.grad)

PyTorch深度神經網路:
基本上使用PyTorch提供nn模組就可以輕易建立一個神經網路,利用optim就可以使用優化器,無須手動設置反向傳播和梯度下降
以下舉例:
import numpy as np
import torch
D_in, H, D_out,=10,5,2
#建立雙層網路模型
model = torch.nn.Sequential(
torch.nn.Linear(D_in, H),#隱藏層
torch.nn.ReLU(),#max(0,x)
torch.nn.Linear(H, D_out),#輸出層
torch.nn.ReLU(),#max(0,x)
)
optimizer = torch.optim.Adam(model.parameters(),lr=0.01)
print(loss_fn)
print(optimizer)

接下來,代入資料試試:
x=torch.rand(100,10)#隨機取x-->100X10維
y_true = torch.rand(100,2)#隨機取真實y-->100X2維
for step inrange(100):#迭代100次
y_pred=model(x)#print("y_pred:",y_pred)
loss=loss_fn(y_pred,y_true)#算loss
print("第",step+1,"次loss:",loss)
optimizer.zero_grad()#梯度設為0,反則之前會累加
loss.backward()
optimizer.step()

(y為100X2張量,此為其中一次迭代)


(loss隨著次數下降)
以上就是PyTorch基本使用,有興趣的同學可以照著步驟,使用看看