Pytorch 中nn.Conv2d的參數用法 channel含義詳解


nn.Conv2d

nn.Conv2d是二維卷積方法,相對應的還有一維卷積方法nn.Conv1d,常用於文本數據的處理,而nn.Conv2d一般用於二維圖像。

 

channel

在深度學習的算法學習中,都會提到 channels 這個概念。在一般的深度學習框架的 conv2d 中,如 tensorflow 、mxnet ,channels 都是必填的一個參數。

channels 該如何理解?

一般的RGB圖片,channels 數量是 3 (紅、綠、藍);而monochrome圖片,channels 數量是 1

一般 channels 的含義是: 每個卷積層中卷積核的數量。
為什么這么說呢,看下面的例子:

如下圖,假設現有一個為 6×6×3的圖片樣本,使用 3×3×3 的卷積核(filter)進行卷積操作。此時輸入圖片的 channels 為 3 ,而卷積核中的 in_channels 與 需要進行卷積操作的數據的 channels 一致(這里就是圖片樣本,為3)。

 

 

接下來,進行卷積操作,卷積核中的27個數字與分別與樣本對應相乘后,再進行求和,得到第一個結果。依次進行,最終得到 4×4 的結果。

 

 

 

上面步驟完成后,由於只有一個卷積核,所以最終得到的結果為 4×4×1, out_channels 為 1 。

在實際應用中,都會使用多個卷積核。這里如果再加一個卷積核,就會得到 4×4×2的結果。

 

 

總結一下,我偏好把上面提到的 channels 分為三種:

  1. 最初輸入的圖片樣本的 channels ,取決於圖片類型,比如RGB;
  2. 卷積操作完成后輸出的 out_channels ,取決於卷積核的數量。此時的 out_channels 也會作為下一次卷積時的卷積核的 in_channels;
  3. 卷積核中的 in_channels ,剛剛2中已經說了,就是上一次卷積的 out_channels ,如果是第一次做卷積,就是1中樣本圖片的 channels 。

說到這里,相信已經把 channels 講的很清楚了。在CNN中,想搞清楚每一層的傳遞關系,主要就是 height,width 的變化情況,和 channels 的變化情況。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM