"""
#coding:utf-8
__project_ = 'TF2learning'
__file_name__ = 'quantization'
__author__ = 'qilibin'
__time__ = '2021/3/17 9:18'
__product_name = PyCharm
"""
import h5py
import pandas as pd
import numpy as np'''
读取原来的只包含权重的H5模型,按层遍历,对每层的每个权重进行16位或8位量化,将量化后的权重数值重新保存在H5文件中
'''def quantization16bit(old_model_path,new_model_path,bit_num):''':param old_model_path: 未量化的模型路径  模型是只保存了权重未保存网络结构:param new_model_path: 量化过后的模型路径:param bit_num: 量化位数:return:'''f = h5py.File(old_model_path,'r')f2 = h5py.File(new_model_path,'w')for  layer in f.keys():# layer : 层的名称print (layer)# # 每层里面的权重名称 有的层没有参数# name_of_weight_of_layer = f[layer].attrs['weight_names']# # 有的层是没有参数的 比如 relu# length = len(name_of_weight_of_layer)length = len(list(f[layer].keys()))if length > 0:g1 = f2.create_group(layer)g1.attrs["weight_names"] = layerg2 = g1.create_group(layer)for weight in f[layer][layer].keys():print ("wieght name is :" + weight)oldparam = f[layer][layer][weight][:]print ('-----------------------------------------old-----------------------')print (oldparam)if type(oldparam) == np.ndarray:if bit_num == 16:newparam = np.float16(oldparam)if bit_num == 8:min_val = np.min(oldparam)max_val = np.max(oldparam)oldparam = np.round((oldparam - min_val) / (max_val - min_val) * 255)newparam = np.uint8(oldparam)else:newparam = oldparamprint ('-----------------------------------------new-----------------------')#print (newparam)#f[key][key][weight_name][:] = newparam  在原来模型的基础上修改 行不通if bit_num == 16:d = g2.create_dataset(weight, data=newparam,dtype=np.float16)if bit_num == 8:d = g2.create_dataset(weight, data=newparam, dtype=np.uint8)else:g1 = f2.create_group(layer)g1.attrs["weight_names"] = layerf.close()f2.close()
old_model_path = './yolox_s.h5'
new_model_path = './yolox_sq.h5'
quantization16bit(old_model_path,new_model_path,8)
# print (f['batch_normalization']['batch_normalization']['gamma:0'][:])

keras 模型量化相关推荐

  1. 【杂谈】当前模型量化有哪些可用的开源工具?

    模型量化属于模型优化中的重要技术之一,是非常有效地提升模型推理速度的技术方案,那么当前有哪些可用的模型量化工具呢? 作者&编辑 | 言有三 1 Tensorflow Lite TensorFl ...

  2. list python 转tensor_Tensorflow模型量化4 --pb转tflite(uint8量化)小结

    Tensorflow模型量化4 --pb转tflite小结(uint8量化) 实验环境:tensorflow-gpu1.15+cuda10.0 模型的fp16量化和int8量化我之前有写,参考: 龟龟 ...

  3. CUDA上深度学习模型量化的自动化优化

    CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...

  4. deeplearning模型量化实战

    deeplearning模型量化实战 MegEngine 提供从训练到部署完整的量化支持,包括量化感知训练以及训练后量化,凭借"训练推理一体"的特性,MegEngine更能保证量化 ...

  5. 基于YOLOv5模型压缩、模型量化、模型剪枝

    基于YOLOv5模型压缩.模型量化.模型剪枝 代码下载地址:下载地址 Requirements pip install -r requirements.txt Pruning for YOLOs Mo ...

  6. 一次失败的Pytorch模型量化尝试

    我的原工程模型是blazeface学习笔记_zhqh100的博客-CSDN博客完整的应该是一个人脸识别项目,人脸识别,大言不惭的说,我之前其实也做过,比如用dlib来做人脸识别,就是用opencv那一 ...

  7. resnet keras 结构_Wandb用起来,一行Python代码实现Keras模型可视化

    大数据文摘出品 来源:wandb 编译:邢畅.宁静 在训练神经网络的过程中,我们可能会希望可视化网络的性能和中间的结构,很多可视化代码的冗长复杂使得我们望而却步,有没有一行代码就能解决可视化的所有问题 ...

  8. 最新组合式模型量化方法,实现FPGA最高硬件利用率,准确率-推理速度达到SOTA...

    作者 | 王言治 来源 | AI科技大本营(ID:rgznai100) 深度神经网络(DNN)在图像.语言处理等领域获得了巨大成功,而如何将这些网络部署在ASIC.FPGA等嵌入式设备仍是热门研究方向 ...

  9. 神经网络压缩方法:模型量化的概念简介

    来源:DeepHub IMBA 本文约3200字,建议阅读6分钟 本文为你介绍如何使用量化的方法优化重型深度神经网络模型. 在过去的十年中,深度学习在解决许多以前被认为无法解决的问题方面发挥了重要作用 ...

最新文章

  1. 《大规模Scrum:More with LeSS》访谈
  2. Hive中数据的加载和导出
  3. 经典英语口语,不得不看(推荐)
  4. php发送邮件,标题是乱码,php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?...
  5. CodeForces - 1252L Road Construction(基环树+有源汇有上下界的最大流)
  6. (转)AS3中的stage,this,root的区别
  7. config.class.php,The EventConfig class - PHP 7 中文文档
  8. sql 分组求和_《从零学会SQL-第七关高级功能》课后练习
  9. php文件便利,PHP便利文件夹下所有文件,创建压缩包
  10. pycharm:一直indexing,怎么解决?
  11. JSP内置对象及部分常用方法
  12. 想和华为人一样移动办公?送你一份华为云WeLink入门“说明书”!
  13. 百度云盘加速器for mac
  14. [转]用Excel制作甘特图并管理项目
  15. 【学习随记】Gyro,Btn,filters_addClass
  16. 10 款富有创意的博客名片设计
  17. 猴子分桃问题的几种解法
  18. 【python】——数据分布拟合工具包fitter
  19. 感触极深的一篇文章(迷失方向的你不妨看看)
  20. 5个时间序列预测的深度学习模型对比总结:从模拟统计模型到可以预训练的无监督模型

热门文章

  1. 【Efficient-Net】基于Efficient-Net效滤网的目标识别算法的MATLAB仿真
  2. GDOP定位算法的MATLAB仿真
  3. 51系列中data,idata,xdata,pdata的区别[笔记]
  4. 子组件获取父组件的值,将这个值作为状态值保存
  5. Should i Backup all my domain controllers
  6. PHP 更高效的字符长度判断方法(转)
  7. Oracle学习笔记之三,Oracle 11g数据库的启动与关闭
  8. cxGRID能否对模板进行保存
  9. Debian的GRUB开机画面和好看的命令行
  10. 计算机硬盘清理,电脑磁盘清理,详细教您电脑磁盘怎么清理