aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadeleine Dunn <madeleine.dunn@arm.com>2023-10-05 18:19:23 +0100
committerMadeleine Dunn <madeleine.dunn@arm.com>2024-04-03 16:06:42 +0100
commita67bcd6eccaa4de00a08a3def8323debecff84d7 (patch)
tree2fa3d79a02de4de1e937f21dabe5766073a4a067
parent879138ebe9dd4b9387bddbdf4af45ba390f14bf6 (diff)
downloadmlia-a67bcd6eccaa4de00a08a3def8323debecff84d7.tar.gz
feat: Implement sparsity
- Add a placeholder file and registry option for sparsity Resolves: MLIA-999 Signed-off-by: Madeleine Dunn <madeleine.dunn@arm.com> Change-Id: I273192ba6813309f5226e3d8e0b686ce87ee6b79
-rw-r--r--src/mlia/nn/rewrite/core/rewrite.py6
-rw-r--r--src/mlia/nn/rewrite/library/fc_sparsity24_layer.py16
-rw-r--r--tests/test_cli_commands.py3
-rw-r--r--tests/test_nn_rewrite_core_rewrite.py5
4 files changed, 27 insertions, 3 deletions
diff --git a/src/mlia/nn/rewrite/core/rewrite.py b/src/mlia/nn/rewrite/core/rewrite.py
index f5f5561..03af0e9 100644
--- a/src/mlia/nn/rewrite/core/rewrite.py
+++ b/src/mlia/nn/rewrite/core/rewrite.py
@@ -115,7 +115,11 @@ class RewritingOptimizer(Optimizer):
[
DynamicallyLoadedRewrite(
"fully-connected", "mlia.nn.rewrite.library.fc_layer.get_keras_model"
- )
+ ),
+ DynamicallyLoadedRewrite(
+ "fully_connected_sparsity24",
+ "mlia.nn.rewrite.library.fc_sparsity24_layer.get_keras_model24",
+ ),
]
)
diff --git a/src/mlia/nn/rewrite/library/fc_sparsity24_layer.py b/src/mlia/nn/rewrite/library/fc_sparsity24_layer.py
new file mode 100644
index 0000000..fda619f
--- /dev/null
+++ b/src/mlia/nn/rewrite/library/fc_sparsity24_layer.py
@@ -0,0 +1,16 @@
+# SPDX-FileCopyrightText: Copyright 2023, Arm Limited and/or its affiliates.
+# SPDX-License-Identifier: Apache-2.0
+"""PLACEHOLDER for example rewrite with one fully connected 2:4 sparsity layer."""
+from typing import Any
+
+from keras.api._v2 import keras # Temporary workaround for now: MLIA-1107
+
+from .fc_layer import get_keras_model
+
+# get_keras_model(input_shape,output_shape)
+
+
+def get_keras_model24(input_shape: Any, output_shape: Any) -> keras.Model:
+ """Generate TensorFlow Lite model for rewrite."""
+ model = get_keras_model(input_shape, output_shape)
+ return model
diff --git a/tests/test_cli_commands.py b/tests/test_cli_commands.py
index 9cda27c..5b2b947 100644
--- a/tests/test_cli_commands.py
+++ b/tests/test_cli_commands.py
@@ -126,7 +126,8 @@ def test_performance_unknown_target(
Exception,
match=re.escape(
"Invalid rewrite target: 'random'. "
- "Supported rewrites: ['fully-connected']"
+ "Supported rewrites: ['fully-connected',"
+ " 'fully_connected_sparsity24']"
),
),
],
diff --git a/tests/test_nn_rewrite_core_rewrite.py b/tests/test_nn_rewrite_core_rewrite.py
index b32fafd..d9c74ea 100644
--- a/tests/test_nn_rewrite_core_rewrite.py
+++ b/tests/test_nn_rewrite_core_rewrite.py
@@ -100,7 +100,10 @@ def test_register_rewrite_function() -> None:
def test_builtin_rewrite_names() -> None:
"""Test if all builtin rewrites are properly registered and returned."""
- assert RewritingOptimizer.builtin_rewrite_names() == ["fully-connected"]
+ assert RewritingOptimizer.builtin_rewrite_names() == [
+ "fully-connected",
+ "fully_connected_sparsity24",
+ ]
def test_rewrite_function_autoload() -> None: