四、1*1 filter的意义
在选取filter的时候,可以选择1*1的filter对数据进行卷积运算。但使用这样的filter对单层数据阵列进行运算似乎没有意义,因为这样的运算只对原始数据的某些数值进行了改变,无法凸显其特征。
然而运用1*1 filter真正的地方是神经网络深层,因为随着神经网络的深入,原数据的数值阵列一般会逐渐变小,而代表特征的维度会变大,例如6*6*3在深层神经网络某层中可能表现为2*2*10。而如果想汇总这些特征维度,可以使用相同维度的1*1filter对其进行运算,例如用1*1*10对上述2*2*10进行运算,经过运算得到一个2*2的数据。在这个1*1*10的fliter中可以对这10个特征进行权重分配,可以得到不同特征不同权重的结果。在某些情况下,同样可以在这一步使用多个1*1的filter,进行另一种意义上的特征提取。
五、MobileNets
MobileNets实际上是对卷积网络运算的优化,降低运算成本,使项目可以运行在低功耗的运算机上,或可使其变的更加复杂。
假设在下面的网络中:
原本的计算成本可以简化为:filter的规模 * 结果规模
如果想得到5个特征则需要5个3*3*3,得到4*4*5,那么计算成本为:
3*3*3(filter的规模) * 4*4*5(结果规模) = 2160
MobileNets在计算过程中不采取原本的计算方式,在一次运算后维度不为单层,而与原始维度相同。
它用原数据与filter对应维度的数值阵列依次进行卷积,相当于3次6*6*1与3*3*1的卷积。
这一步计算成本为:3*3 * 4*4 * 3 = 432
因为原本的计算方式是对各个维度的对应数值求积在求和,一步到位。而MobileNets将求积和求和分开。而上步求积后又如何求和,1*1filter派上了用场。
接着使用1*1*3对4*4*3进行运算
如果想得到5个特征维度则这一步计算成本为(同原始计算方式):1*1*3 * 4*4*5 = 240
则总成本为: 432 + 240 = 672
大幅减小运算成本,为原始成本的
一般的,减小倍数为 , s为结果维度,例中为5;f为filter大小,例中为3。
显然,如果结果维度很大,filter很大,那么MobileNets可以极大减少计算成本。