解决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学习笔记(一)(基础入门之环境搭建)
Jun 05 Python
python 写入csv乱码问题解决方法
Oct 23 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
对python中的装包与解包实例详解
Aug 24 Python
pytorch 图像中的数据预处理和批标准化实例
Jan 15 Python
在python3中使用shuffle函数要注意的地方
Feb 28 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 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电台频率大全 - 11 浙江省
2020/03/11 无线电
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
jQuery.extend 函数的详细用法
2012/06/27 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
js实现每日签到功能
2018/11/29 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
python实现二叉查找树实例代码
2018/02/08 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
汽车专业人才自我鉴定范文
2013/12/29 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
食品安全工作实施方案
2014/03/26 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
女生抽烟检讨书
2014/10/05 职场文书
见习报告怎么写
2014/10/31 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python