bevfusion 模型量化 尚未剪枝

量化

QAT: quantilize after training:
需要在 到处onnx 的时候 添加 q和dq 层,然后使用pytorch-quantization 2.1.3 calibration
q dq, 使用resize 和 bias 进行 16表示32位数

剪枝

在这里插入图片描述
在这里插入图片描述

### 模型量化 模型量化的目的是减少神经网络中的数值精度,从而降低存储需求并加快计算速度。通常情况下,浮点数会被转换成更低位宽的数据类型,比如从32位浮点数转为8位整数甚至更少。这种转变可以显著减小模型尺寸,并允许在资源受限设备上高效执行推断操作[^3]。 ```python import tensorflow as tf def quantize_model(model): converter = tf.lite.TFLiteConverter.from_keras_model(model) converter.optimizations = [tf.lite.Optimize.DEFAULT] tflite_quantized_model = converter.convert() with open('quantized_model.tflite', 'wb') as f: f.write(tflite_quantized_model) # 使用示例 original_model = ... # 加载原始模型 quantize_model(original_model) ``` ### 参数裁剪 (Pruning) 参数裁剪是指移除那些对于预测贡献较小的连接或节点,以此来简化网络结构。这一过程可以通过设置阈值实现自动去除绝对值低于某个标准的权重量子化后的链接;也可以采用迭代的方式,在每次训练周期结束时逐步淘汰最不重要的部分[^1]。Dropout 和 DropConnect 是早期形式的随机性引入机制,它们可以在一定程度上看作是隐式的剪枝手段[^2]。 ```python from tensorflow_model_optimization.sparsity import keras as sparsity prune_low_magnitude = sparsity.prune_low_magnitude model_for_pruning = prune_low_magnitude(base_model) # 编译和拟合被修剪过的模型... ``` ### 知识蒸馏 知识蒸馏是一种迁移学习的方法论,其中小型的学生模型试图模仿大型教师模型的行为模式。这不仅限于复制相同的输出标签分布,还包括捕捉中间层特征表示等方面的信息传递。通过这种方式,学生模型能够在保持较高性能的同时拥有更快的速度以及更紧凑的设计。 ```python teacher_model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) student_model.compile(optimizer=optimizer, loss=tf.keras.losses.KLDivergence(), metrics=[...]) distiller = Distiller(student=student_model, teacher=teacher_model) distiller.compile( student_loss_fn=tf.keras.losses.CategoricalCrossentropy(from_logits=True), distillation_loss_fn=tf.keras.losses.KLDivergence(), optimizer=optimizer, metrics=[...], ) # 训练蒸馏器... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值