NLP習(xí)題 — python函數(shù)

torch.randn

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




Pytorch的Variable

pytorch兩個(gè)基本對(duì)象:Tensor(張量)和Variable(變量)

其中,tensor不能反向傳播,variable可以反向傳播。


https://blog.csdn.net/Mr_zhuo_/article/details/108132061


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()

我們在用神經(jīng)網(wǎng)絡(luò)求解PDE時(shí), 經(jīng)常要用到輸出值對(duì)輸入變量(不是Weights和Biases)求導(dǎo); 在訓(xùn)練WGAN-GP 時(shí), 也會(huì)用到網(wǎng)絡(luò)對(duì)輸入變量的求導(dǎo)。 以上兩種需求, 均可以用pytorch 中的autograd.grad() 函數(shù)實(shí)現(xiàn)。autograd.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False)outputs: 求導(dǎo)的因變量(需要求導(dǎo)的函數(shù))inputs: 求導(dǎo)的自變量

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ì)有些許差別。

transform(X):將數(shù)據(jù)X轉(zhuǎn)換成降維后的數(shù)據(jù),當(dāng)模型訓(xùn)練好后,對(duì)于新輸入的數(shù)據(jù),也可以用transform方法來降維。

torch.bmm

矩陣 * 向量

fit,transform,fit_transform區(qū)別

數(shù)據(jù)預(yù)處理中方法?

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)換。?

transform()和fit_transform()二者的功能都是對(duì)數(shù)據(jù)進(jìn)行某種統(tǒng)一處理(比如標(biāo)準(zhǔn)化~N(0,1),將數(shù)據(jù)縮放(映射)到某個(gè)固定區(qū)間,歸一化,正則化等) fit_transform(trainData)對(duì)部分?jǐn)?shù)據(jù)先擬合fit,找到該part的整體指標(biāo),如均值、方差、最大值最小值等等(根據(jù)具體轉(zhuǎn)換的目的),然后對(duì)該trainData進(jìn)行轉(zhuǎn)換transform,從而實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化、歸一化等等。 根據(jù)對(duì)之前部分trainData進(jìn)行fit的整體指標(biāo),對(duì)剩余的數(shù)據(jù)(testData)使用同樣的均值、方差、最大最小值等指標(biāo)進(jìn)行轉(zhuǎn)換transform(testData),從而保證train、test處理方式相同。

所以,一般都是這么用:

?from sklearn.preprocessing import StandardScaler

?sc = StandardScaler()?

sc.fit_tranform(X_train)?

sc.tranform(X_test) 1 2 3 4?

問題:為什么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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容