zoukankan      html  css  js  c++  java
  • 模型压缩,模型减枝,tf.nn.zero_fraction,统计0的比例,等。

         我们刚接到一个项目时,一开始并不是如何设计模型,而是去先跑一个现有的模型,看在项目需求在现有模型下面效果怎么样。当现有模型效果不错需要深入挖掘时,仅仅时跑现有模型是不够的,比如,如果你要在嵌入式里面去实现,目前大多数模型大小和计算量都不满足,这就产生了模型压缩和剪枝。

         模型压缩常做的是将模型从float变为int8,这不仅带来了模型参数空间上的减少,同时,是的很多较小的参数直接变为0,是的模型压缩可以变得比较小(一般是缩小到原来的20),但是这种方式下,压缩后的模型不一定能work,还得调整。

        模型剪枝,就是觉得算法实现这个任务or功能,没必要使用那么大的模型,但是目前深度学习的模型对我们来说还是个“黑盒子”,怎样剪枝合适?这就可以使用tf.nn.zero_fraction统计某个值的0的比例,这个tf.nn.zero_fraction计算出来的值越大,0的比例越高,说明这层网络种起作用的神经元个数越少。通过这个统计,我们是否可以这样采取策略:

        1、网络层数不变,减少该层网络的卷积核个数,训练看效果。

        2、我们将值为0占比高的网络砍掉,再训练查看效果。如果效果好,ok继续压缩,如果效果差,分析原因:a、是否是网络减少了一层,导致感受野变小了?可以尝试增大剩下网络的感受野。b、是否是模型复杂度不够了?可以尝试增加剩下网络卷积核和特征图个数,适当弥补砍掉网络带来的复杂度降低。

    当然,还有其他很多模型压缩,模型减枝的技巧方式,比如使用mobile net代替传统卷积神经网络等。

        

  • 相关阅读:
    进程与线程
    the art of seo(chapter seven)
    the art of seo(chapter six)
    the art of seo(chapter five)
    the art of seo(chapter four)
    the art of seo(chapter three)
    the art of seo(chapter two)
    the art of seo(chapter one)
    Sentinel Cluster流程分析
    Sentinel Core流程分析
  • 原文地址:https://www.cnblogs.com/YouXiangLiThon/p/9565262.html
Copyright © 2011-2022 走看看