参考文章:
直观理解深度学习的卷积操作,超赞!-CSDN博客
如何理解卷积神经网络中的通道(channel)_神经网络通道数-CSDN博客
深度学习-卷积神经网络—卷积操作详细介绍_深度卷积的作用-CSDN博客
正文:
在跑深度学习代码的过程中,经常遇到的一个报错是:模型尺寸不匹配的问题。一般pytorch中尺寸/张量的表现方式是:torch.size([16,3,24,24])。这四个参数的含义如下:
16:批量大小(Batch Size)表示张量中包含的图像数量,每次迭代(或称为一个batch)处理16张图片。
3:通道数(Channels)在彩色图像中,代表RGB三个颜色通道。对于灰度图像,这个数字将是1。
24:高度(Height)表示每张图片的高度,单位是像素,这里是24个像素。
24:宽度(Width)这表示每张图片的宽度,单位也是像素,这里同样是24个像素。
模型只有在各阶段张量均匹配了才能跑通。其中,第二个参数即是channel。
一般来说,常见的图像如灰度图,彩色图,他们的通道数分别为1和3,但为什么在深度学习模型训练时会出现如torch.size([32,64,224,224]),其中channel = 64之类非常多通道数的情况呢?
这里就和滤波器和卷积核这两个结构相关了。
从上图也可以看到,在通道数为1的情况下,可以认为滤波器和卷积核是等价的;但当通道数为3时,滤波器和通道数有区别。
此外,输出通道多少,其实和模型设定的卷积核数量有关,只要设置的合理,理论上64通道,128通道都是可以实现的,此时,这里的通道含义也就不能完全按照传统的“RGB”这样的三色通道来理解了。
这里每一个卷积核都能提取特定通道上特定的特征信息,最后将提取出的特征信息整合,得到对应数量的特征图,得到输出通道。
每一种通道代表着图像某一方面的特征信息。
对于网络的下一层,输入通道数就是网络上一层的输出通道数。
下面这张图也很好的描述了卷积过程中,卷积核/滤波器的作用,以及维度的变化过程: