定义
一般来讲,在深度学习框架的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。
卷积核中的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