模型压缩

为了将tensorflow深度学习模型部署到移动/嵌入式设备上,我们应该致力于减少模型的内存占用,缩短推断时间,减少耗电。有几种方法可以实现这些要求,如量化、权重剪枝或将大模型提炼成小模型。

在这个项目中,我使用了 TensorFlow 中的量化工具来进行模型压缩。目前我只使用权重量化来减小模型大小,因为根据 Mac 上的测试结果,完整 8 位转换没有提供额外的好处,比如缩短推断时间。(由于 requant_range 中的错误,无法在 Pixel 上运行完整的 8 位模型)。由于 8 位量化工具不适合 CPU,时间甚至翻了一倍。如果你有兴趣了解更多关于量化的实用建议,可以阅读 Pete Warden 这篇很棒的文章(https://petewarden.com/2017/06/22/what-ive-learned-about-neural-network-quantization/)。

对模型进行权重量化:

  1. 将模型写入协议缓冲区文件。
  2. 从源安装和配置 TensorFlow(https://www.tensorflow.org/install/install_sources)。
  3. 在 TensorFlow 目录下运行下列命令行:
  1. bazel build tensorflow/tools/graph_transforms:transform_graph
  2. bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=/your/.pb/file  --outputs="output_node_name"  --out_graph=/the/quantized/.pb/file  --transforms='quantize_weights'

以我的项目为例,在量化权重后,预训练的 WaveNet 模型的大小从 15.5Mb 下降到了 4.0Mb。现在可以将这个模型文件移动到安卓项目中的「assets」文件夹。

最新文章

  1. .NET 泛型分析
  2. eclipse建包出现多层包
  3. 树上倍增求LCA(最近公共祖先)
  4. makefile学习小结
  5. 我们为什麽需要有经验的DBA
  6. [C#] 谈谈异步编程async await
  7. hibernate 表配置文件如何设置表字段的默认值
  8. MSDN资料
  9. Linux优化之IO子系统监控与调优
  10. Python核心编程读笔 5: python的序列
  11. OOX 面向对象X
  12. c#发送短息验证码
  13. 在IIS上新发布的网站,样式与js资源文件加载不到(资源文件和网页同一个域名下)
  14. Objective-C基础教程 笔记
  15. ubuntu下nginx的常用操作
  16. destoon入门实例与常见问题
  17. Socket网络编程--Libev库学习(2)
  18. Android的四大天王
  19. Winform Datagridview 单元格html格式化支持富文本
  20. win7 64位如何共享XP上的打印机?

热门文章

  1. sqlserver 2014 删除主键约束
  2. eclipse Errors during build
  3. git怎么克隆远程仓库到本地仓库
  4. ARX中类型强制转换
  5. VM虚拟机NAT链接外网
  6. Linux命令(文本编辑器)
  7. [工具]iostat
  8. Promise嵌套问题/async await执行顺序
  9. STL源码分析之内存池
  10. 7-11 社交网络图中结点的“重要性”计算 (30 分)(Dijkstra算法)