torch.randn
返回一個(gè)符合均值為0,方差為1的正態(tài)分布(標(biāo)準(zhǔn)正態(tài)分布)中填充隨機(jī)數(shù)的張量。

Pytorch的Variable
pytorch兩個(gè)基本對(duì)象:Tensor(張量)和Variable(變量)
其中,tensor不能反向傳播,variable可以反向傳播。

torch.from_numpy()
簡單說一下,就是torch.from_numpy()方法把數(shù)組轉(zhuǎn)換成張量,且二者共享內(nèi)存,對(duì)張量進(jìn)行修改比如重新賦值,那么原始數(shù)組也會(huì)相應(yīng)發(fā)生改變。


torch.matmul()
torch.matmul是tensor的乘法,輸入可以是高維的。
當(dāng)輸入是都是二維時(shí),就是普通的矩陣乘法,和tensor.mm函數(shù)用法相同。

F.softmax()和F.log_softmax
F.softmax作用: 按照行或者列來做歸一化的
F.log_softmax作用: 在softmax的結(jié)果上再做多一次log運(yùn)算
dim指的是歸一化的方式,如果為0是對(duì)列做歸一化,1是對(duì)行做歸一化。
F.nll_loss
在用pytorch做訓(xùn)練、測試時(shí)經(jīng)常要用到損失函數(shù)計(jì)算輸出與目標(biāo)結(jié)果的差距
loss.backward()的作用
我們都知道,loss.backward()函數(shù)的作用是根據(jù)loss來計(jì)算網(wǎng)絡(luò)參數(shù)的梯度,其對(duì)應(yīng)的輸入默認(rèn)為網(wǎng)絡(luò)的葉子節(jié)點(diǎn),即數(shù)據(jù)集內(nèi)的數(shù)據(jù),葉子節(jié)點(diǎn)如下圖所示:

pytorch 中的 autograd.grad()
pca.transform
fit(X): 用數(shù)據(jù)X來訓(xùn)練PCA模型。
fit_transform(X):用X來訓(xùn)練PCA模型,同時(shí)返回降維后的數(shù)據(jù)。
inverse_transform(newData) :將降維后的數(shù)據(jù)轉(zhuǎn)換成原始數(shù)據(jù),但可能不會(huì)完全一樣,會(huì)有些許差別。
torch.bmm
矩陣 * 向量
fit,transform,fit_transform區(qū)別
fit():簡單來說,就是求得訓(xùn)練集X的均值,方差,最大值,最小值,這些訓(xùn)練集X固有的屬性。?
?transform(): 在fit的基礎(chǔ)上,進(jìn)行標(biāo)準(zhǔn)化,降維,歸一化等操作(看具體用的是哪個(gè)工具,如PCA,StandardScaler等)。?
?fit_transform():fit_transform是fit和transform的組合,既包括了訓(xùn)練又包含了轉(zhuǎn)換。?
?from sklearn.preprocessing import StandardScaler
問題:為什么test就直接tranform了?
一般對(duì)于數(shù)據(jù)集處理上,會(huì)直接對(duì)訓(xùn)練集進(jìn)行 擬合+轉(zhuǎn)換,然后直接對(duì)測試集 進(jìn)行轉(zhuǎn)換。不太懂?對(duì)訓(xùn)練集的擬合會(huì)直接在測試集上用transform就能擬合了?
np.vstack()&np.hstack()
np.vstack:按垂直方向(行順序)堆疊數(shù)組構(gòu)成一個(gè)新的數(shù)組


np.hstack:按水平方向(列順序)堆疊數(shù)組構(gòu)成一個(gè)新的數(shù)組


enumerate
enumerate() 函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。

np.random.randint
函數(shù)的作用是,返回一個(gè)隨機(jī)整型數(shù),范圍從低(包括)到高(不包括),即[low, high)