tensorflow模型的训练后剪枝和量化,压缩查看效果

本文探讨在TensorFlow中如何优化大型模型,通过训练后剪枝和量化技术实现模型瘦身,以适应嵌入式系统如树莓派的部署。剪枝通过设定规则将接近0的权重置0,降低计算量;量化则在保持较低精度的同时,大幅减少模型体积,如从float32转换为float16或int32。实验结果显示,虽然剪枝压缩效果有限,但量化能有效压缩模型体积达10倍。
摘要由CSDN通过智能技术生成

本文主要介绍的是在tensorflow模型较大,参数量很多的情况下如何优化模型,让模型瘦身,使得模型有部署到一些嵌入式系统,如 树莓派的可能性。
① 训练后剪枝
主要原理比较简单,设置规则将接近0的权重设置为0,使得权重更加的稀疏,减少计算量
②训练后量化
训练模型的时候采用了flot32的高精度,在预测的时候,减小精度设置到比如flot16,int32 等,使得小数的位数减少了,计算难度也就变小了,拿int举例子,将每一步的中间权重(不包括输出)量化为0-255的区间内,用0-255的数字来表示以前的权重,这样在预测的时候确保了在牺牲很小精度的情况下,模型的体积大大减小了,因为flot型和int型,一个字符占的字节数是不一样的。
最后通过zip发现,训练后剪枝压缩的效果一般,应该是模型本身已经够稀疏了,但是训练后量化压缩的效果很好,体积缩小了10倍数。
还可以尝试,训练时剪枝的方法,官方都有很详细的步骤


import os
import time

import numpy as np
import tensorflow as tf
from PIL import Image, ImageDraw, ImageFont
from tensorflow.keras.layers import Input, Lambda
from tensorflow.keras.models import Model

from nets.yolo4 import yolo_body, yolo_eval
import tensorflow_model_optimization as tfmot
import tempfile

model_path = 'model_data/ep100-loss1.559-val_loss1.393.h5'
anchors_path = 'model_data/yolo_anchors.txt'
classes_path = 'model_data/defect_classes.txt'

def _get_class(classes_path):
    classes_path = os.path.expanduser(classes_path)
    with open(classes_path) as f:
        class_names = f.readlines()
    class_names =
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值