在一般的深度學習框架的 conv2d 中,如 tensorflow、mxnet,channel 都是必填的一個參數
在 tensorflow 中,對於輸入樣本中 channels 的含義,一般是RGB圖片,channels的數量是3(R、G、B)。而灰度圖是的channels是1;
mxnet 中,一般channels的含義是:每個卷積層中卷積核的數量。
為了更好的理解,下面舉個例子。圖片來自 吳恩達老師的深度學習課程
假設有一個 6x6x3的圖片樣本,使用 3x3x3的卷積核。此時輸入的 channels 為3。而卷積核中的 in_channels 與需要進行卷積操作的數據channels一致

卷積:27個數字分別與樣本對應相乘,在進行求和,得到第一個結果。依次進行,最終得到 4x4 的結果

由於只有一個卷積核,最終得到的結果是 4x4x1,out_channels為1
在實際應用中,都會使用多個卷積核。這里如果再加一個卷積核,就會得到 4x4x2 的結果

總結一下,把上面提到的channels分為三種:
1. 最初圖片的輸入樣本channels,取決於圖片類型,比如RGB;
2. 卷積操作完成后輸出的 out_channels,取決於卷積核的數量。此時的 out_channels 也會作為下一次卷積時的 in_channels;
3. 卷積核中的 in_channels,剛剛2中已經說了,就是上一次卷積的out_channels,如果是第一次做卷積,就是1中樣本圖片的 channels
其實在CNN中,搞清楚每一層的傳遞關系,主要就是height、width的變化情況,以及 channels 的變化情況
在看看 tensorflow 中 tf.nn.conv2d 的 input 和 filter 這兩個參數
input : [batch,in_height,in_width,in_channels]
filter : [filter_height,filter_width,in_channels,out_channels]

參考地址:
https://blog.csdn.net/sscc_learning/article/details/79814146
