理解CNN中的channels

定义

一般来讲,在深度学习框架的Conv1dConv2d中,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种:

  1. 输入图像样本的channels,取决于图像类型,比如RGB;
  2. 卷积操作完成后,输出的out_channels,取决于卷积核的数量;该out_channels也会作为下一次卷积操作时卷积核的in_channels
  3. 卷积核中的in_channels,如2中所描述,即上一次卷积操作的out_channels;如果是第一次卷积操作,则如1中所描述,为输入图像样本的channels

想要弄清楚CNN中每一层的传递关系,主要就是弄清楚每一层的heightwidthchannels的变化。

参考资料

[1] https://blog.csdn.net/sscc_learning/article/details/79814146

你可能感兴趣的:(理解CNN中的channels)