张量流量化感知训练

2024-09-25 00:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想量化一个DenseNet模型。我使用的是Tensorflow 2.4

import tensorflow_model_optimization as tfmot
model = tf.keras.applications.DenseNet121(include_top=True,weights=None,input_tensor=None,input_shape=None,pooling=None,classes=1000) 
quantize_model = tfmot.quantization.keras.quantize_model
model = quantize_model(model)

但我得到了以下信息:

运行时错误:层conv2\u块1\u 0\u bn:<;类“tensorflow.python.keras.layers.normalization\u v2.BatchNormalization”>;不支持。您可以通过将tfmot.quantization.keras.QuantizeConfig实例传递给quantize_annotate_layerAPI来量化此层

有没有办法我可以做到这一点。 我无法更改keras代码


Tags: 模型importnoneinputmodeltftensorflowas
1条回答
网友
1楼 · 发布于 2024-09-25 00:27:51

在您的情况下,需要分别量化层BatchNormalization

如果您看到下面这个Quantization TF Guide的示例代码片段,那么DefaultDenseQuantizeConfig将用于处理这个问题。希望本指南能帮助您解决这个问题

quantize_annotate_layer = tfmot.quantization.keras.quantize_annotate_layer
quantize_annotate_model = tfmot.quantization.keras.quantize_annotate_model
quantize_scope = tfmot.quantization.keras.quantize_scope

class CustomLayer(tf.keras.layers.Dense):
  pass

model = quantize_annotate_model(tf.keras.Sequential([
   quantize_annotate_layer(CustomLayer(20, input_shape=(20,)), DefaultDenseQuantizeConfig()),
   tf.keras.layers.Flatten()
]))

# `quantize_apply` requires mentioning `DefaultDenseQuantizeConfig` with `quantize_scope`
# as well as the custom Keras layer.
with quantize_scope(
  {'DefaultDenseQuantizeConfig': DefaultDenseQuantizeConfig,
   'CustomLayer': CustomLayer}):
  # Use `quantize_apply` to actually make the model quantization aware.
  quant_aware_model = tfmot.quantization.keras.quantize_apply(model)

quant_aware_model.summary()

相关问题 更多 >