一、多输入通道
之前说到的的输入输出都是二维数组(即只有两个维度:高、宽)。而真实数据实际上有很多维度。比如,彩色图像除了高、宽,还有RGB三个颜色通道。所以,彩色图像在内存中表示为一个形状为 3 ∗ h x ∗ w x 3*h_x*w_x 3∗hx∗wx的三维数组。大小为3的这一维称为通道(channel)。
当输入含有多个通道时,对应的卷积核也应该有相同的通道数。此时,输出为:每个通道分别做互相关运算,然后按通道相加。如下图:
二、多输出通道
假设输入通道数为 c i n c_{in} cin,输出通道数为 c o u t c_{out} cout,那么此时卷积核的形状为 c o u t ∗ c i n ∗ h k ∗ w k c_{out}*c_{in}*h_k*w_k cout∗cin∗hk∗wk,即对于最高维度来说,每个元素都是一个形状为 c i n ∗ h k ∗ w k c_{in}*h_k*w_k cin∗hk∗wk的元素。此时,输入和卷积核中每一个元素做互相关运算,得到输出中对应通道的结果。
三、1×1卷积核
对于
1
∗
1
1*1
1∗1的卷积核,进行互相关操作,在高、宽维度上没有了识别相邻元素构成的模式的功能,而计算主要发生在了通道维度上。下图展示了输入通道数为3,输出通道数为2的
1
∗
1
1*1
1∗1卷积核的互相关操作。
图中可以看出,每一个通道的输出的其中一个元素(比如输出中的浅蓝色方块),都是输入和卷积核在通道维度上的计算。
此外,对于 1 ∗ 1 1*1 1∗1的卷积核,输出的高、宽维度大小与输入相同。