1.CNN卷積層
通過nn.Conv2d可以設(shè)置卷積層,當(dāng)然也有1d和3d。
卷積層設(shè)置完畢,將設(shè)置好的輸入數(shù)據(jù),傳給layer(),即可完成一次前向運(yùn)算。也可以傳給layer.forward,但不推薦。
2. 池化層
池化層的核大小一般是2*2,有2種方式:
maxpooling:選擇數(shù)據(jù)中最大值輸出
avgpooling:計(jì)算數(shù)據(jù)的均值并輸出
通過這一層可以實(shí)現(xiàn)降采樣。
3.數(shù)據(jù)批量標(biāo)準(zhǔn)化
Batch Normalize,在計(jì)算過程中,通常輸入的數(shù)據(jù)都是0-255的像素?cái)?shù)據(jù),不方便計(jì)算,因此可以通過nn.BatchNorm1d方法進(jìn)行標(biāo)準(zhǔn)化。
標(biāo)準(zhǔn)化后,可以通過running_mean, running_var獲取全局的均值和方差。
4.nn.Module類
①各類函數(shù)
Linear, ReLU, Sigmoid, Conv2d, Dropout等等
②容器功能
我們可以直接在定義自己的層的時(shí)候,把所有我們需要用到的層及相關(guān)函數(shù)放進(jìn)去。使用的時(shí)候直接調(diào)用即可。
③參數(shù)管理
在這個(gè)類中可以直接生成我們需要的參數(shù),并且自動(dòng)帶上梯度的需求。
④調(diào)用GPU
⑤存儲和加載
訓(xùn)練過程中可以根據(jù)需求,比如訓(xùn)練到某一個(gè)點(diǎn)的時(shí)候達(dá)到了最優(yōu),可以將其存儲。
⑥訓(xùn)練、測試狀態(tài)切換
直接調(diào)用根節(jié)點(diǎn)的train, eval就可以切換。
⑦ 創(chuàng)建自己的層
還有其他功能,但現(xiàn)在還不理解,因此先不往上寫了。
5.數(shù)據(jù)增強(qiáng)
數(shù)據(jù)增強(qiáng)主要用在我們數(shù)據(jù)不夠用的時(shí)候,對原來的數(shù)據(jù)進(jìn)行調(diào)整,從而生成新的數(shù)據(jù)。比如一張圖片,我們可以對其進(jìn)行翻轉(zhuǎn)、旋轉(zhuǎn)、大小調(diào)整、切割等操作 。導(dǎo)入數(shù)據(jù)的時(shí)候即可進(jìn)行,具體實(shí)現(xiàn)方式如下。
以上就是人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)CNN卷積層及nn.Module類示例分析的詳細(xì)內(nèi)容,更多關(guān)于PyTorch中CNN及nn.Module的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://blog.csdn.net/Swayzzu/article/details/121127070