tangzj

1 卷积层和全连接层的概念

https://towardsdatascience.com/convolutional-neural-network-17fb77e76c05

2 卷积层和全连接层间关系

2.1 1 × 1卷积核的卷积层和全连接层

假设有一个三维图片输入,大小为 3 × 3 × 3, 其中 3 为 channel 颜色维度,3 × 3 长和宽像素维度。下面分别通过卷积层和全连接层进行计算。

2.1.1 通过卷积层计算图片

下面通过一个卷积层计算,其中卷积层中 卷积核为 3 × 1 × 1, 扩充为0,步长为 1,输入通道为 3,输出通道为2。

显然,Kernel中有 6 个参数,这是我们需要数据迭代去训练的参数。

2.1.2 通过全连接层计算图片

我们根据输入图像和输出图像,建立一个全连接层:

首先将图片数据转化为一维向量,向量长为 3,该向量作为输入层。同样转化卷积层结果( 2 × 3 × 3 张量) 为长度 18 的一维向量,作为输出层。

通过计算可以知道,此全连接层的参数数量为 486 个 ( 27 * 18 )。

很明显全连接层的参数远远比卷积层的核函数中的参数多很多,下面我们将根据卷积层的计算原理逐步搭建一个全连接层,以此来搞清楚全连接层参数数量高的原因。

首先,根据卷积层计算原理,可知:

    Y000  X000 * K0000 + X100 * K0100 + X200 * K0200

根据此式可构建全连接层:

同理,构建输出层中 channel = 0 的关系。

    Y[0] = X[0] * K[0] + X[1] * K[0] + X[2] * K[0] + X[3] * K[0] + X[4] * K[0] + X[5] * K[0] + X[6] * K[0] + X[7] * K[0] + X[8] * K[0]

可以看出全连接层的参数数量是之前的 9 倍,但是仅仅是 K[0] 的三个参数复制使用而已。(这也是卷积层的特点之一,权值共享)

相同颜色的参数代表权重相同。

然后,对输出层上的剩余的 channel 做同样的计算。

    Y[1] = X[0] * K[1] + X[1] * K[1] + X[2] * K[1] + X[3] * K[1] + X[4] * K[1] + X[5] * K[1] + X[6] * K[1] + X[7] * K[1] + X[8] * K[1]

可以发现计算涉及的参数,只有 K[1] 改变了,这是由卷积层计算的原理有关,由卷积核的输出通道数量决定输出的维度,在全连接层中,表现为输出层的大小。

显然,因为改变了卷积核的参数,全连接层的参数也应当改变,所以完整的全连接层如下,构建完成。

相同颜色的参数代表在同一个卷积核的同一个维度,一共有 54 个参数。

2.1.3 对比与总结

根据卷积层计算构建的全连接层实质等效于卷积层,因此,卷积层所做的计算次数(乘法)相等于全连接层的参数数量(54个,2组参数,每组3个参数重复使用9次),卷积核的参数数量(6个)相等于全连接层的有效参数(不为0的参数)数量(2组,每组3个参数)。而此全连接层的参数(54个)相较于不考虑计算的全连接层的参数(486个)同样少很多,那么可以将剩下没有在卷积层计算中体现出来的参数均视为0,这样就满足了全连接层应有的参数数量。

2.2 输入数据的spatial维度和卷积核相同的卷积层和全连接层

假设有一个三维图片输入,大小为 3 × 3 × 3, 其中 3 为 channel 颜色维度,3 × 3 长和宽像素维度。下面分别通过卷积层和全连接层进行计算。

2.1.1 通过卷积层计算图片

下面通过一个卷积层计算,其中卷积层中 卷积核为 3 × 3 × 3, 扩充为0,步长为 1,输入通道为 3,输出通道为2。

 

显然,Kernel中有 54 个参数,这是我们需要数据迭代去训练的参数。

2.1.2 通过全连接层计算图片

我们根据输入图像和输出图像,建立一个全连接层:

首先将图片数据转化为一维向量,向量长为 33  ,该向量作为输入层。同样转化卷积层结果( 2 × 1 张量) 为长度 2 的一维向量,作为输出层。

 

观察得知,可以发现此全连接层参数于卷积核的参数相同。此外,该全连接层的计算和卷积层的计算也是相同的。

因此,可以说此全连接层等效于卷积层。

2.1.3 对比与总结

可以看出,如果卷积核和输入数据的spatial维度相同时,卷积层等价于全连接层。

2.3 n1 × n2 卷积核的卷积层和全连接层

假设有一个三维图片输入,大小为 channel1 × h × w, 其中 channel 为 颜色维度,h × w 长和宽像素维度。通过一个核函数为 channel2 × channel1 × n1 × n2 的卷积层,那么会输出大小为 channel2 × r1 × r2 的张量,其中 r1 = ⌊(h - n1)/s⌋ + 1,r2 = ⌊(h - n2)/s⌋ + 1

其中,最终输出的张量,包含 channel2 * r1 * r2 个项,其中每一项都是通过 channel1 次卷积运算后相求和得到的,每一次卷积运算会涉及 n1 * n2 次乘法运算,所以一共会涉及 channel1 * channel2 * n* n* r1 * r2 次计算。

如果将该卷积层转换为全连接层,因为输入层是大小为 channel1 × h × w 的向量,输出大小为 channel2 × r1 × r的向量,全连接层就会有 channel1 * channel2 *  h * w * r1 * r个参数,其中大部分均为0,channel1 * channel2 * n* n* r1 * r个为存在值的有效参数,有效参数是由 channel1 * channel2 * n* n2 个参数重复 r* r2 次组成的。

经过 r* r2 次重复的核心有效参数即使卷积层的卷积核内的参数。

3 总结

下面做个简单的归纳,对比全连接层的全参数数量和有效参数数量,可以发现:

  • 当 h * w == n* n且 n≤ h && n2 ≤ w 时,即 h == n1 && w == n2 时,全连接层即可完全等价于卷积层,并且 r1 == r2 == 1,不会存在重复的有效参数。
  • 当 n< h || n2 < w 时,n1 和 n2 的值分别越接近 h 和 w,那么全连接层的有效参数率越高。
  • 当 r1 > 1 || r> 1 时,r和 r的值越大,有效参数的重复率越高。

 

相关文章:

猜你喜欢