在卷积神经网络中我们通常需要输入 in_channels
和 out_channels
,即输入通道数和输出通道数,它们代表什么意思呢?本文将给出一个形象的理解。
对于通道的理解可以参考下面的这篇文章:
这里我稍微总结一下核心观点:
- 对于最初输入图片样本的通道数
in_channels
取决于图片的类型,如果是彩色的,即RGB类型,这时候通道数固定为3,如果是灰色的,通道数为1。 - 卷积完成之后,输出的通道数
out_channels
取决于过滤器的数量。从这个方向理解,这里的out_channels
设置的就是过滤器的数目。 - 对于第二层或者更多层的卷积,此时的
in_channels
就是上一层的out_channels
,out_channels
还是取决于过滤器数目。
在第2条我用的是过滤器,而不是卷积核,跟原作者观点有些不同,因为我认为在这里用过滤器描述更合适。卷积核和过滤器的区别可以看我的这篇文章 卷积核(kernel)和过滤器(filter)的区别
对于第1点可以参考下图:
这里输入通道数是3,每个通道都需要跟一个卷积核做卷积运算,然后将结果相加得到一个特征图的输出,这里有4个过滤器,因此得到4个特征图的输出,输出通道数为4。
单个特征图的计算可看下图:
再来看一下单通道的例子:
输入是灰色图片,输入通道数是1,卷积核有3个,做三次卷积操作,生成3个特征图,输出通道数为3。
单通道特征图的计算为:
这里可能会有人有疑惑为什么图片的类型是RGB的,它的通道数就是3呢?
这里要从计算机如何识别图片来考虑。在人眼中看到的图片是五颜六色,对于计算机来说就只是数字。那么计算机如何分辨图片颜色呢?——RGB。所有颜色都可以用这三种颜色来表示,因此我们只需要三个数字就可以表示一种颜色。
下图是我随机选择的几个颜色的RGB表示:
计算机要表示整张图片,就是用数字去表示整张图片的所有像素,但是每个像素需要三个数值来表示,于是就有了图片的3通道。每个通道分别表示RGB三种颜色。
最初的通道数是3,但是有的神经网络通道数目多达100多个,怎么理解呢?
我们依然可以类比RGB通道,对于多通道我们可以看做是颜色表示的更抽象版本,每一个通道都表示图像某一方面的信息。