通道(channel)怎么理解:通道可以理解为视角、角度。例如同样是提取边界特征的卷积核,可以按照R、G、B三种元素的角度提取边界。
计算例子:5*5*3 矩阵填充0后变成7*7*3矩阵,卷积运算,步长为2生成3*3*2的输出矩阵,若步长为1则生成5*5*2的输出矩阵。
解析:图中input 7*7*3中,7*7代表图像的像素/长宽,3代表R、G、B 三个颜色通道,可以看到周边有填充0; 有两个卷积核Filter w0、Filter w1,每个filter对应每个通道有一组w权重;一个filter滑动到一个位置后计算三个通道的卷积,求和,加bias,得到这个filter在该位置的最终结果;每个filter的输出是各个通道的汇总;输出的个数与filter个数相同。所以最右边能得到两个不同的输出。
下面详细分析 1 的计算过程:
第一个通道和对应权重的结果:0*1+0*1+0*(-1)+0*(-1)+0*0+1*1+0*(-1)+0*(-1)+1*0 = 1
第二个通道和对应权重的结果:0*(-1)+0*0+0*(-1)+0*0+1*0+1*(-1)+0*1+0*(-1)+2*0 = -1
第三个通道和对应权重的结果:0*0+0*1+0*0+0*1+2*0+0*1+0*0+0*(-1)+0*1 = 0
偏置:1
输出:1+(-1)+ 0 + 1 = 1
几个参数:
a. 深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。
b. 步长stride:决定滑动多少步可以到边缘。
c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
上面的例子中:
•两个神经元,即depth=2,意味着有两个滤波器。
•数据窗口每次移动两个步长取3*3的局部数据,即stride=2。(步长是步子大小,不是步数,步长为2,恰好滑动9次覆盖所有数据就能生成3*3 的矩阵)
•zero-padding=1。
数据窗口滑动,导致输入在变化,但中间滤波器Filter w0的权重是固定不变的,这个权重不变即所谓的CNN中的参数(权重)共享机制。再打个比方,某人环游全世界,所看到的信息在变,但采集信息的双眼不变。不同人的双眼看同一个局部信息 所感受到的不同,即一千个读者有一千个哈姆雷特,所以不同的滤波器就像不同的双眼,不同的人有着不同的反馈结果。
来源:
https://blog.csdn.net/cheneykl/article/details/79740810