人工智能學習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其它相關文章!
推薦閱讀:
- Pytorch實現ResNet網絡之Residual Block殘差塊
- 利用Pytorch實現ResNet網絡構建及模型訓練
- 淺談Pytorch 定義的網絡結構層能否重復使用
- 人工智能學習PyTorch教程之層和塊
- 自己搭建resnet18網絡並加載torchvision自帶權重的操作