Tensor VS NumPy
1、Tensor
https://pytorch.org/docs/stable/tensors.html
Tensor其實(shí)就是一個(gè)高維度的矩陣或是
type:
shape:
how to construct a tensor?
?Operators:
?
?
?
?
?
?2、Numpy
https://github.com/wkentaro/pytorch-for-numpy-users
?
?
?
?NVIDIA CUDA是顯卡里邊的一個(gè)功能,他可以支援你在顯卡上去做一些運(yùn)算;gpu的cuda就像cpu的核心數(shù)一樣;(GPU的cuda和CPU的核心數(shù)一樣,越多的話就能同時(shí)計(jì)算的數(shù)量越多)
?因?yàn)榫仃囘\(yùn)算都可以拆成很多個(gè)小的運(yùn)算,可以同時(shí)...,因?yàn)楹芏噙\(yùn)算是互相獨(dú)立的,互相獨(dú)立的運(yùn)算他不互相干擾,那GPU里邊有很多個(gè)小核心,每個(gè)小核心都可以算其中一個(gè)小運(yùn)算,全部加在一起他就可以達(dá)到平行處理,速度就會(huì)變得比較快;
How to calculate gradient?
1、先產(chǎn)生一個(gè)tensor;
2、計(jì)算z;
3、backward就是幫你計(jì)算gradient的步驟;
4、顯示計(jì)算出來(lái)的微分;
?Train一個(gè)neural network的步驟:
1、讀data;
1.1、讀數(shù)據(jù)的第一步要先創(chuàng)建一個(gè)dataset;
先從Pytorch這個(gè)Dataset里邊產(chǎn)生一個(gè)class,產(chǎn)生這個(gè)class你要自己去定義一些東西,比如說(shuō)讀data,去做一些預(yù)處理;一次取得一個(gè)data,指定一個(gè)index就把對(duì)應(yīng)的data把它輸出出來(lái),回傳給dataloader,下面dataloader是會(huì)用到__getitem__這個(gè)函數(shù)的;還要回傳出來(lái)你的dataset有多大;
?剛才產(chǎn)生的dataset就把他傳到dataloader里邊,
?
?
?查看參數(shù):
?激活函數(shù):
?損失函數(shù):
?怎么產(chǎn)生自己定義的neural network呢?
更新:
有了前邊的data和要件(設(shè)計(jì)好的network)就可以做training了;training之前要先讀data,設(shè)好dataloader,產(chǎn)生你的model,放到device上面,比如說(shuō)丟到cuda上面就是丟到GPU上邊跑,之后設(shè)計(jì)loss function,最后要把你的model參數(shù)丟進(jìn)一個(gè)optimizer里邊,然后去gradient decent優(yōu)化;
?training的方式可以1寫(xiě)一個(gè)for循環(huán),在for循環(huán)外邊定義跑幾次;2要把model設(shè)計(jì)為train,train的話才會(huì)去更新參數(shù);3從剛才設(shè)好的dataloader里邊每次提取出一組數(shù)據(jù),比如x和y;4之后把optimizer里邊存的gradient全部設(shè)置為0,因?yàn)槿绻幸郧暗膅radient在里邊的話就會(huì)影響現(xiàn)在的更新,5再把移到device上邊去,6計(jì)算model的output(predication),7計(jì)算loss,8計(jì)算gradient(指示計(jì)算并未更新)9step就是使用計(jì)算出來(lái)的gradient去更新你的model的參數(shù)。
?validation:
可能你的model計(jì)算完一個(gè)epoch之后呢就要去做validation,1要把model設(shè)成eval這樣才不會(huì)做training,2,3,從dataloader里邊每次取出一個(gè)數(shù)據(jù),4移到device上面,5我們不希望在validation或者testing的時(shí)候去計(jì)算gradient,所以加一行with torch.no_gradient,不計(jì)算gradient的話速度會(huì)非常的快,6model去計(jì)算他的output,7計(jì)算loss,8累積loss并計(jì)算平均Loss;這些loss就會(huì)去決定你要不要把你現(xiàn)在的model存下來(lái),那就看你的model有沒(méi)有進(jìn)步,
?Testing:
testing的話是沒(méi)有正確答案的,1先設(shè)成eval,然后每次讀一筆data進(jìn)來(lái),然后去做預(yù)測(cè),最后collect收集起來(lái),
?Save/Load:
當(dāng)你train完一個(gè)neural network,要把它存起來(lái),torch.save;如果想把它再載上來(lái)呢就torch.load
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Tensor VS NumPy的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Overleaf-LaTex表格制作
- 下一篇: Gradient Descent和Bac