当前位置:   article > 正文

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

tensorflow c++ 裁剪模型

本文主要介绍的是在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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/393094
推荐阅读
相关标签
  

闽ICP备14008679号