MobileNets

四、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

大幅减小运算成本,为原始成本的    \frac{672}{2160}\doteq 0.31

一般的,减小倍数为   \frac{1}{s}+\frac{1}{f^{2}} , s为结果维度,例中为5;f为filter大小,例中为3。

显然,如果结果维度很大,filter很大,那么MobileNets可以极大减少计算成本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值