解决tensorflow模型压缩的问题_踩坑无数,总算搞定


Posted in Python onMarch 02, 2021

1.安装bazel,从github上下载linux版的.sh文件,然后安装

2.从GitHub上下载最新的TensorFlow源码

3.进入TensorFlow源码文件夹,输入命令

bazel build tensorflow/tools/graph_transforms:transform_graph

这里会遇到各种坑,比如

ERROR: /opt/tf/tensorflow-master/tensorflow/core/kernels/BUILD:3044:1: C++ compilation of rule ‘//tensorflow/core/kernels:matrix_square_root_op' failed (Exit 4)

gcc: internal compiler error: Killed (program cc1plus)

这个错误是cpu负荷太大,需要加行代码

# 生成swap镜像文件
sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512
# 对该镜像文件格式化
sudo mkswap /mnt/512Mb.swap
# 挂载该镜像文件 
sudo swapon /mnt/512Mb.swap

又或者这个@aws Error downloading

我看csdn有的博主解决方法是去临时文件夹删掉文件重新下载,但是我这边发现没用,我这边的解决方法是运行bazel前先输入一条命令:

sed -i '\@https://github.com/aws/aws-sdk-cpp/archive/1.5.8.tar.gz@aws' tensorflow/workspace.bzl

命令里的网址就是实际要下载的文件的地址,因为有的地址可能改了

到这里编译bazel就完成了

4.编译完了就可以模型压缩了,也是一行代码,in_graph为输入模型路径,outputs不动,out_graph为输出模型路径,transforms就填一个quantize_weights就可以了,这个就是把32bit转成8bit的,也是此方法最有效的一步;我看有的博主还先编译summary然后打印出输入输出结点,之后再输入一大堆参数,还删除一些结点啥的,我这边都试了,最终也并没有更缩减模型大小,所以就这样就可以了。

bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=../model/ctpn.pb  --outputs='output_node_name'  --out_graph=../model/quantized_ctpn.pb  --transforms='quantize_weights'

最终从68m缩减到17m,75%的缩减比例,实测效果基本没啥差别,这方法还是很管用的。

补充:模型压缩一二三之tensorflow查看ckpt模型里的参数和数值

查看ckpt模型参数和数值

import os
from tensorflow.python import pywrap_tensorflow
checkpoint_path = os.path.join("<你的模型的目录>", "./model.ckpt-11000") 
# Read data from checkpoint file
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path)
var_to_shape_map = reader.get_variable_to_shape_map()
# Print tensor name and values
for key in var_to_shape_map:
 print("tensor_name: ", key)
 print(reader.get_tensor(key))

注意:

1、"<你的模型目录>“是指你的meta、ckpt这些模型存储的路径。

比如路径”/models/model.ckpt-11000.meta"这种,那么"<你的模型目录>“就是”/models"

2、当目录下有多个ckpt时,取最新的model名字到ckpt-<最大数字>就可以了,后面不用了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python中用于返回绝对值的abs()方法
May 14 Python
windows下python连接oracle数据库
Jun 07 Python
Python 错误和异常代码详解
Jan 29 Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 Python
python unittest实现api自动化测试
Apr 04 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 Python
Python jiaba库的使用详解
Nov 23 Python
python Protobuf定义消息类型知识点讲解
Mar 02 #Python
Django项目在pycharm新建的步骤方法
Mar 02 #Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 #Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 #Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 #Python
Python实现我的世界小游戏源代码
Mar 02 #Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
Mar 02 #Python
You might like
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
php中错误处理操作实例分析
2019/08/23 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
给同学的道歉信
2014/01/16 职场文书
策划创业计划书
2014/02/06 职场文书
上课打牌的检讨书
2014/02/15 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
工商管理本科生求职信
2014/07/13 职场文书
团队拓展活动方案
2014/08/28 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
初中教师个人工作总结
2015/02/10 职场文书