日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

Tensor VS NumPy

發(fā)布時(shí)間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tensor VS NumPy 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。