模型压缩,模型减枝,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代替传统卷积神经网络等。
模型压缩,模型减枝,tf.nn.zero_fraction,统计0的比例,等。的更多相关文章
- Tensorflow BatchNormalization详解:4_使用tf.nn.batch_normalization函数实现Batch Normalization操作
使用tf.nn.batch_normalization函数实现Batch Normalization操作 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 吴恩达deeplearnin ...
- tensorflow 笔记11:tf.nn.dropout() 的使用
tf.nn.dropout:函数官网说明: tf.nn.dropout( x, keep_prob, noise_shape=None, seed=None, name=None ) Defined ...
- tf.nn.embedding_lookup函数
tf.nn.embedding_lookup(params, ids, partition_strategy='mod', name=None, validate_indices=True, max_ ...
- tf.nn.softmax_cross_entropy_with_logits()函数的使用方法
import tensorflow as tf labels = [[0.2,0.3,0.5], [0.1,0.6,0.3]]logits = [[2,0.5,1], [0.1,1,3]] a=tf. ...
- tf.nn.dropout 激活函数
tf.nn.dropout(x,keep_prob,noise_shape=None,seed=None,name=None) 参数: x:一个浮点型Tensor. keep_prob:一个标量Ten ...
- TensorFlow之tf.nn.dropout():防止模型训练过程中的过拟合问题
一:适用范围: tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层 二:原理: dropout就是在不同的训练过程中随机扔掉一部分神经元.也就是让 ...
- 模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...
近日,TensorFlow模型优化工具包又添一员大将,训练后的半精度浮点量化(float16 quantization)工具. 有了它,就能在几乎不损失模型精度的情况下,将模型压缩至一半大小,还能改善 ...
- 模型压缩-Learning Efficient Convolutional Networks through Network Slimming
Zhuang Liu主页:https://liuzhuang13.github.io/ Learning Efficient Convolutional Networks through Networ ...
- CNN 模型压缩与加速算法综述
本文由云+社区发表 导语:卷积神经网络日益增长的深度和尺寸为深度学习在移动端的部署带来了巨大的挑战,CNN模型压缩与加速成为了学术界和工业界都重点关注的研究领域之一. 前言 自从AlexNet一举夺得 ...
随机推荐
- 检查MySQL内存使用情况
==================================================================================================== ...
- html5课件外包-----swf/AS2/AS3/fla/ppt课件如何转换为html5交互课件/动画
随着Adobe公司公布2020年将不再更新和维护flash,flash逐渐被html5取代,很多教育机构都在面临着如何将自己的flash交互课件产品转换到html5版本的问题,最近遇到非常多的客户一上 ...
- element-ui 点击获取table的行索引
<el-table :data="list" v-loading.body="listLoading" element-loading-text=&quo ...
- mysql主从原理及配置
一.mysql集群架构: 1.一主一从 2.双主 3.一主多从(扩展mysql的读性能) 4.多主一从(5.7开始支持) 5.联机复制 关系图: 二.配置主从用途及条件 2.1用途 1.保障可用性,故 ...
- 使用iframe方式获得svg中的DOM元素,和svg 的 contentDocument 返回 null
碰到这个的相关问题,百度找了好久,找到了个解决方法,原址 https://segmentfault.com/q/1010000009001758 var iframe = document.getEl ...
- Azkaban 使用问题及解决(一)
什么是Azkaban Azkaban是一款基于Java编写的任务调度系统 任务调度:有四个任务脚A.B.C.D,其中任务A与任务B可以并行运行,然后任务C依赖任务A和任务B的运行结果,任务D依赖任务C ...
- 将NULL值转化为“”
// 将NULL转化为“”,1是需要修改的实体类参数,3是转化后的实体对象 String 2= JSON.toJSONString(1, SerializerFeature.WriteNullStri ...
- Linux 系统报错 rcu_preempt detected stalls on CPUs/tasks
说在前面的一些废话: 这是什么错误我不知道,为什么出现我不知道! 那为什么还要把他写出来了,只是因为这个错误遇到了,而且浪费了我很多时间和精力. 故事留给自己看,解决办法就是,重新升级一下Linux系 ...
- 画流程图挺好的软件---visio
visio 2016 下载地址链接: https://pan.baidu.com/s/1oyfJL_QgOA7qUHOt7p8CIA 提取码: mv79 第一次做的样式图:
- [论文阅读]Object detection at 200 Frames Per Second
本文提出了一个有效且快速的目标检测器,该目标检测器得速度可以达到200+fps,在Pascal VOC-2007上的mAP比Tiny-Yolo-v2高出14. 本文从以下三个方面对网络进行改进. 网络 ...