第十四节,卷积神经网络之经典网络Inception(四) (3)

第十四节,卷积神经网络之经典网络Inception(四)

这是一个 28×28×192 的输入块,执行一个 5×5 卷积,它有 32 个过滤器,输出为 28×28×32。我们来计算这个 28×28×32 输出的计算成本,它有 32 个过滤器,因为输出有 32 个通道,每个过滤器大小为 5×5×192,输出大小为 28×28×32,所以你要计算 28×28×32 个数字。对于输出中的每个数字来说,你都需要执行 5×5×192 次乘法运算,所以乘法运算的总次数为每个输出值所需要执行的乘法运算次数(5×5×192)乘以输出值个数(28×28×32),把这些数相乘结果等于 1.2 亿。即使在现在,用计算机执行 1.2 亿次乘法运算,成本也是相当高的。

为了降低计算成本,Inception v1模型在原有的Inception模型基础上作了一下改进,Inception v1模型在3x3,5x5最大池化层前面分别加入了1x1的卷积核,起到了降低特征图厚度的作用(其中1x1卷积主要用来降维压缩通道数),下面我们会介绍 1×1 卷积的应用。

第十四节,卷积神经网络之经典网络Inception(四)

输入为 28×28×192,输出为 28×28×32。其结果是这样的,对于输入层,使用 1×1 卷积把输入值从 192 个通道减少到 16 个通道。然后对这个较小层运行5×5 卷积,得到最终输出。请注意,输入和输出的维度依然相同,输入是 28×28×192,输出是 28×28×32,和上一页的相同。但我们要做的就是把左边这个大的输入层压缩成这个较小的的中间层,它只有 16 个通道,而不是 192 个。

第十四节,卷积神经网络之经典网络Inception(四)

有时候这被称为瓶颈层,瓶颈通常是某个对象最小的部分,假如你有这样一个玻璃瓶,这是瓶塞位置,瓶颈就是这个瓶子最小的部分。

同理,瓶颈层也是网络中最小的部分,我们先缩小网络表示,然后再扩大它。
接下来我们看看这个计算成本,应用 1×1 卷积,过滤器个数为 16,每个过滤器大小为1×1×192,这两个维度相匹配(输入通道数与过滤器通道数), 28×28×16 这个层的计算成本是,输出 28×28×192 中每个元素都做 192 次乘法,用 1×1×192 来表示,相乘结果约等于 240万。

第十四节,卷积神经网络之经典网络Inception(四)

那第二个卷积层呢? 240 万只是第一个卷积层的计算成本,第二个卷积层的计算成本又是多少呢?这是它的输出, 28×28×32,对每个输出值应用一个 5×5×16 维度的过滤器,计算结果为 1000 万。所以所需要乘法运算的总次数是这两层的计算成本之和,也就是 1240 万,与上一张幻灯片中的值做比较,计算成本从 1.2 亿下降到了原来的十分之一,即 1240 万。所需要的加法运算与乘法运算的次数近似相等,所以我只统计了乘法运算的次数。

总结一下,如果你在构建神经网络层的时候,不想决定池化层是使用 1×1, 3×3 还是 5×5的过滤器,那么 Inception 模块就是最好的选择。我们可以应用各种类型的过滤器,只需要把输出连接起来。之后我们讲到计算成本问题,我们学习了如何通过使用 1×1 卷积来构建瓶颈层,从而大大降低计算成本。

你可能会问,仅仅大幅缩小表示层规模会不会影响神经网络的性能?事实证明,只要合理构建瓶颈层,你既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算。这就是 Inception 模块的主要思想,我们在这总结一下。后面我们将演示一个完整的 Inception 网络。

三 Inception网络

我们已经讲解了Inception 网络基础模块。在这里,我们将学习如何将这些模块组合起来,构筑你自己的 Inception 网络。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgydfd.html