(1) Pytorch深度學習—數值處理

寒柏懒得想發表於2024-11-11

(1)Pytorch——數值處理

參考於李沐“動手學深度學習”系列以及網上各路大佬的部落格資料,感謝大家的分享,如錯改,如侵刪。

torch中的數值處理

數值處理是深度學習中極其重要的一部分,張量(tensor)是後續進行處理和計算的基本單位。張量表示一個由數值組成的陣列,這個陣列可能有多個維度。具有一個軸的張量對應數學上的向量(vector);
具有兩個軸的張量對應數學上的矩陣(matrix);具有兩個軸以上的張量沒有特殊的數學名稱。

建立和初始化

話不多說我們直接上程式碼:

# 張量定義
x = torch.arange(12)
y = torch.zeros((2, 3, 4)) #定義全零/全一張量
z = torch.rand(3, 4) #正態分佈隨機定義tensor elements

# 改變張量形狀
x.reshape(3, 4)
x.reshape(-1, 4) #透過-1可以實現形狀的自動計算

tensor同樣支援直接的+ - * / 甚至 == 運算子。我們也可以按某個指定軸將tensor聯結到一起,程式碼如下。

X = torch.arange(12) 
dtype=torch.float32).reshape((3,4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)

執行效果如圖:

tensor所有元素求和:X.sum()

索引和切片

torch中的索引和切片原則基本和python一致,就不贅述了,如果Python基礎不好的同學可以看一下我主頁的另一篇Python的部落格。
並且,numpy和torch定義的張量相互轉換十分便捷:

A = X.numpy()
B = torch.tensor(A)

微積分、線性代數和機率論

微積分、線性代數和機率論中設計到的數學操作也是深度學習非常重要的一部分,畢竟工科盡頭是理科。這塊內容較多,筆者還在整理,稍後補齊(挖坑ing)。

資料預處理

到目前為止我們終於可以真正開始深度學習的工作了,資料預處理也是我們構建模型訓練的第一步。

Pandas是python中常用的資料分析處理擴充包。
Dataset是Pytorch中的一個類,用於封裝資料集的載入邏輯,使其可以被 DataLoader 有效載入。
Transformer是一個用於影像預處理的工具集。在計算機視覺方面應用較多。
這些我們在下一節線性神經網路中實戰中會有所涉及,遇到具體的api也會做解釋,大家一開始不必強硬的記住所有api,具體問題具體瞭解就好了。

相關文章