diff options
Diffstat (limited to 'src/mlia/nn/rewrite/library')
-rw-r--r-- | src/mlia/nn/rewrite/library/clustering.py | 26 | ||||
-rw-r--r-- | src/mlia/nn/rewrite/library/sparsity.py | 18 |
2 files changed, 34 insertions, 10 deletions
diff --git a/src/mlia/nn/rewrite/library/clustering.py b/src/mlia/nn/rewrite/library/clustering.py index 81bfd90..a81d2d4 100644 --- a/src/mlia/nn/rewrite/library/clustering.py +++ b/src/mlia/nn/rewrite/library/clustering.py @@ -9,11 +9,18 @@ from keras.api._v2 import keras # Temporary workaround for now: MLIA-1107 from mlia.nn.rewrite.library.helper_functions import compute_conv2d_parameters -def fc_clustering_rewrite(input_shape: Any, output_shape: Any) -> keras.Model: +def fc_clustering_rewrite( + input_shape: Any, + output_shape: Any, + num_clusters: int = 2, + cluster_centroids_init: tfmot.clustering.keras.CentroidInitialization = tfmot.clustering.keras.CentroidInitialization( # pylint: disable=line-too-long + "CentroidInitialization.LINEAR" + ), +) -> keras.Model: """Fully connected TensorFlow Lite model ready for clustering.""" rewrite_params = { - "number_of_clusters": 4, - "cluster_centroids_init": tfmot.clustering.keras.CentroidInitialization.LINEAR, + "number_of_clusters": num_clusters, + "cluster_centroids_init": cluster_centroids_init, } model = tfmot.clustering.keras.cluster_weights( to_cluster=keras.Sequential( @@ -28,11 +35,18 @@ def fc_clustering_rewrite(input_shape: Any, output_shape: Any) -> keras.Model: return model -def conv2d_clustering_rewrite(input_shape: Any, output_shape: Any) -> keras.Model: +def conv2d_clustering_rewrite( + input_shape: Any, + output_shape: Any, + num_clusters: int = 2, + cluster_centroids_init: tfmot.clustering.keras.CentroidInitialization = tfmot.clustering.keras.CentroidInitialization( # pylint: disable=line-too-long + "CentroidInitialization.LINEAR" + ), +) -> keras.Model: """Conv2d TensorFlow Lite model ready for clustering.""" rewrite_params = { - "number_of_clusters": 4, - "cluster_centroids_init": tfmot.clustering.keras.CentroidInitialization.LINEAR, + "number_of_clusters": num_clusters, + "cluster_centroids_init": cluster_centroids_init, } conv2d_parameters = compute_conv2d_parameters( input_shape=input_shape, output_shape=output_shape diff --git a/src/mlia/nn/rewrite/library/sparsity.py b/src/mlia/nn/rewrite/library/sparsity.py index 745fa8b..2342e3d 100644 --- a/src/mlia/nn/rewrite/library/sparsity.py +++ b/src/mlia/nn/rewrite/library/sparsity.py @@ -9,7 +9,9 @@ from keras.api._v2 import keras # Temporary workaround for now: MLIA-1107 from mlia.nn.rewrite.library.helper_functions import compute_conv2d_parameters -def fc_sparsity_rewrite(input_shape: Any, output_shape: Any) -> keras.Model: +def fc_sparsity_rewrite( + input_shape: Any, output_shape: Any, sparsity_m: int = 2, sparsity_n: int = 4 +) -> keras.Model: """Fully connected TensorFlow Lite model ready for sparse pruning.""" model = tfmot.sparsity.keras.prune_low_magnitude( to_prune=keras.Sequential( @@ -19,13 +21,18 @@ def fc_sparsity_rewrite(input_shape: Any, output_shape: Any) -> keras.Model: keras.layers.Dense(output_shape), ] ), - sparsity_m_by_n=(2, 4), + sparsity_m_by_n=( + sparsity_m, + sparsity_n, + ), ) return model -def conv2d_sparsity_rewrite(input_shape: Any, output_shape: Any) -> keras.Model: +def conv2d_sparsity_rewrite( + input_shape: Any, output_shape: Any, sparsity_m: int = 2, sparsity_n: int = 4 +) -> keras.Model: """Conv2d TensorFlow Lite model ready for sparse pruning.""" conv2d_parameters = compute_conv2d_parameters( input_shape=input_shape, output_shape=output_shape @@ -39,7 +46,10 @@ def conv2d_sparsity_rewrite(input_shape: Any, output_shape: Any) -> keras.Model: keras.layers.ReLU(), ] ), - sparsity_m_by_n=(2, 4), + sparsity_m_by_n=( + sparsity_m, + sparsity_n, + ), ) return model |