人工智能學習pyTorch的ResNet殘差模塊示例詳解

1.定義ResNet殘差模塊

一個block中,有兩個卷積層,之後的輸出還要和輸入進行相加。因此一個block的前向流程如下:

輸入x→卷積層→數據標準化→ReLU→卷積層→數據標準化→數據和x相加→ReLU→輸出out

中間加上瞭數據的標準化(通過nn.BatchNorm2d實現),可以使得效果更好一些。

①各層的定義

②前向傳播

在前向傳播中輸入x,過程中根據前向流程,調用上面定義的層即可。

如此,便定義好瞭一個殘差的模塊。

2.ResNet18的實現

此處的ResNet18並沒有涉及到太多細節,隻是一個大致的內容。

在初始化的時候,定義好所需要使用的模塊,根據上面定義好的殘差模塊,調用即可。在這裡使用瞭4次殘差模塊,將通道數從輸入的3(也就是RGB),變成瞭512通道。也就是最終提取的高級特征。提取完特征,直接輸入給Linear方法,得到圖片在10種圖片類型上的結果,用於預測以及損失值的求解。

①各層的定義

②前向傳播

同樣的,調用上面定義好的層,根據流程傳播即可。

3.測試ResNet18

如下圖,輸入的是2張圖,RGB,長寬均是32的數據。

通過ResNet18之後,輸出的是2張圖,每張圖對應10種類型的不同取值logits。

過程中的通道數目的轉換如下面的結果所示:3→64→128→256→512→512

過程中的尺寸轉換,根據設置的卷積核,以及步長,會有不同的結果。但總體都是為瞭得到更高級的特征,最終輸入全連層,得到Logits。

以上就是人工智能學習pyTorch的ResNet殘差模塊示例詳解的詳細內容,更多關於PyTorch人工智能學習ResNet殘差模塊的資料請關註WalkonNet其它相關文章!

推薦閱讀: