diff options
Diffstat (limited to 'src/mlia/nn/rewrite/library/fc_clustering_layer.py')
-rw-r--r-- | src/mlia/nn/rewrite/library/fc_clustering_layer.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mlia/nn/rewrite/library/fc_clustering_layer.py b/src/mlia/nn/rewrite/library/fc_clustering_layer.py new file mode 100644 index 0000000..7cc383e --- /dev/null +++ b/src/mlia/nn/rewrite/library/fc_clustering_layer.py @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: Copyright 2024, Arm Limited and/or its affiliates. +# SPDX-License-Identifier: Apache-2.0 +"""Example rewrite with one fully connected clustered layer.""" +from typing import Any + +import tensorflow_model_optimization as tfmot +from keras.api._v2 import keras # Temporary workaround for now: MLIA-1107 + + +def get_keras_model_clus(input_shape: Any, output_shape: Any) -> keras.Model: + """Generate TensorFlow Lite model for clustering rewrite.""" + rewrite_params = { + "number_of_clusters": 32, + "cluster_centroids_init": tfmot.clustering.keras.CentroidInitialization.LINEAR, + } + model = tfmot.clustering.keras.cluster_weights( + to_cluster=keras.Sequential( + [ + keras.layers.InputLayer(input_shape=input_shape), + keras.layers.Flatten(), + keras.layers.Dense(units=output_shape), + ] + ), + **rewrite_params + ) + return model |