定义
一般来讲,在深度学习框架的Conv1d或Conv2d中,channels是一个必填的参数。
TensorFlow文档中对channels的定义如下所示:
channels: Number of color channels in the example images. For color images, the number of channels is 3 (red, green, blue). For monochrome images, there is just 1 channel (black).
通道:样本图像中颜色通道的数量。RGB图像有3个通道(红色、绿色、蓝色)。单色图像只有1个通道(黑色)。
举例说明
举个简单的例子,现有一个6 * 6 * 3的样本(RGB图像),使用1个大小为3 * 3 * 3的卷积核进行卷积操作,此时该输入图像的channels就为3。卷积核的in_channels与需要进行卷积操作的数据的channels一致,这里就为3。

使用1个卷积核在RGB图像上进行卷积操作
卷积核中的27个值分别与样本对应相乘以后,再相加,得到输出结果中的第1个值;同理,以同样的方式计算得到输出结果中剩下的值。由于只有1个卷积核,所以最终输出结果的大小为
4 * 4 * 1,也就是说,out_channels为1。
卷积过程
在实践中,往往会用到多个卷积核。如果我们使用2个大小均为
3 * 3 * 3的卷积核,那么最终输出结果的大小为4 * 4 * 2。
多个卷积核
总结
总的来说,可以把channels分为3种:
- 输入图像样本的
channels,取决于图像类型,比如RGB; - 卷积操作完成后,输出的
out_channels,取决于卷积核的数量;该out_channels也会作为下一次卷积操作时卷积核的in_channels; - 卷积核中的
in_channels,如2中所描述,即上一次卷积操作的out_channels;如果是第一次卷积操作,则如1中所描述,为输入图像样本的channels。
想要弄清楚CNN中每一层的传递关系,主要就是弄清楚每一层的height、width和channels的变化。
参考资料
[1] https://blog.csdn.net/sscc_learning/article/details/79814146