I want to do Quantization Aware Training,
Here’s my model architecture.
Model: "sequential_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
masking_4 (Masking) (None, 389, 64) 0
_________________________________________________________________
my_layer_5_4 (my_layer_5) (None, 389, 512) 12288
_________________________________________________________________
time_distributed_4 (TimeDist (None, 389, 39) 20007
=================================================================
I follow the tfmot.quantization.keras.QuantizeConfig,
I want all of them to use quantization.
Here’s my code
import tensorflow_model_optimization as tfmot
from tensorflow_model_optimization.python.core.quantization.keras.default_8bit import default_8bit_quantize_configs
NoOpQuantizeConfig = default_8bit_quantize_configs.NoOpQuantizeConfig
class NoOpQuantizeConfig(tfmot.quantization.keras.QuantizeConfig):
"""QuantizeConfig which does not quantize any part of the layer."""
def get_weights_and_quantizers(self, layer):
return []
def get_activations_and_quantizers(self, layer):
return []
def set_quantize_weights(self, layer, quantize_weights):
pass
def set_quantize_activations(self, layer, quantize_activations):
pass
def get_output_quantizers(self, layer):
return []
def get_config(self):
return {}
def apply_quantization(layer):
if isinstance(layer, (tf.keras.layers.TimeDistributed, tf.keras.layers.Masking,tf.keras.layers.my_layer_5_4 )):
return tfmot.quantization.keras.quantize_annotate_layer(layer, quantize_config=NoOpQuantizeConfig())
else:
return tfmot.quantization.keras.quantize_annotate_layer(layer)
if __name__ == '__main__':
model = load_model('./model.h5',custom_objects = {'my_layer_5': my_layer_5})
model.summary()
annotated_model = tf.keras.models.clone_model(
model,
clone_function=apply_quantization,
)
with tf.keras.utils.custom_object_scope({"NoOpQuantizeConfig": NoOpQuantizeConfig}):
q_aware_model = tfmot.quantization.keras.quantize_apply(annotated_model)
q_aware_model.summary()
When I run it, but shows a error
ValueError: ('Expected `model` argument to be a `Model` instance, got ', <keras.engine.sequential.Sequential object at 0x7f234263dfd0>)```