(1) Pytorch深度學(xué)習(xí)—數(shù)值處理
(1)Pytorch——數(shù)值處理
參考于李沐“動(dòng)手學(xué)深度學(xué)習(xí)”系列以及網(wǎng)上各路大佬的博客資料,感謝大家的分享,如錯(cuò)改,如侵刪。
torch中的數(shù)值處理
數(shù)值處理是深度學(xué)習(xí)中極其重要的一部分,張量(tensor)是后續(xù)進(jìn)行處理和計(jì)算的基本單位。張量表示一個(gè)由數(shù)值組成的數(shù)組,這個(gè)數(shù)組可能有多個(gè)維度。具有一個(gè)軸的張量對(duì)應(yīng)數(shù)學(xué)上的向量(vector);
具有兩個(gè)軸的張量對(duì)應(yīng)數(shù)學(xué)上的矩陣(matrix);具有兩個(gè)軸以上的張量沒(méi)有特殊的數(shù)學(xué)名稱。
創(chuàng)建和初始化
話不多說(shuō)我們直接上代碼:
# 張量定義
x = torch.arange(12)
y = torch.zeros((2, 3, 4)) #定義全零/全一張量
z = torch.rand(3, 4) #正態(tài)分布隨機(jī)定義tensor elements
# 改變張量形狀
x.reshape(3, 4)
x.reshape(-1, 4) #通過(guò)-1可以實(shí)現(xiàn)形狀的自動(dòng)計(jì)算
tensor同樣支持直接的+ - * / 甚至 == 運(yùn)算符。我們也可以按某個(gè)指定軸將tensor聯(lián)結(jié)到一起,代碼如下。
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)
運(yùn)行效果如圖:

tensor所有元素求和:X.sum()
索引和切片
torch中的索引和切片原則基本和python一致,就不贅述了,如果Python基礎(chǔ)不好的同學(xué)可以看一下我主頁(yè)的另一篇Python的博客。
并且,numpy和torch定義的張量相互轉(zhuǎn)換十分便捷:
A = X.numpy()
B = torch.tensor(A)
微積分、線性代數(shù)和概率論
微積分、線性代數(shù)和概率論中設(shè)計(jì)到的數(shù)學(xué)操作也是深度學(xué)習(xí)非常重要的一部分,畢竟工科盡頭是理科。這塊內(nèi)容較多,筆者還在整理,稍后補(bǔ)齊(挖坑ing)。
數(shù)據(jù)預(yù)處理
到目前為止我們終于可以真正開(kāi)始深度學(xué)習(xí)的工作了,數(shù)據(jù)預(yù)處理也是我們構(gòu)建模型訓(xùn)練的第一步。
Pandas是python中常用的數(shù)據(jù)分析處理拓展包。
Dataset是Pytorch中的一個(gè)類,用于封裝數(shù)據(jù)集的加載邏輯,使其可以被 DataLoader 有效加載。
Transformer是一個(gè)用于圖像預(yù)處理的工具集。在計(jì)算機(jī)視覺(jué)方面應(yīng)用較多。
這些我們?cè)谙乱还?jié)線性神經(jīng)網(wǎng)絡(luò)中實(shí)戰(zhàn)中會(huì)有所涉及,遇到具體的api也會(huì)做解釋,大家一開(kāi)始不必強(qiáng)硬的記住所有api,具體問(wèn)題具體了解就好了。

浙公網(wǎng)安備 33010602011771號(hào)