aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/devices/cortexa/data_analysis.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mlia/devices/cortexa/data_analysis.py')
-rw-r--r--src/mlia/devices/cortexa/data_analysis.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/mlia/devices/cortexa/data_analysis.py b/src/mlia/devices/cortexa/data_analysis.py
index dff95ce..d2b6f35 100644
--- a/src/mlia/devices/cortexa/data_analysis.py
+++ b/src/mlia/devices/cortexa/data_analysis.py
@@ -1,6 +1,8 @@
# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0
"""Cortex-A data analysis module."""
+from __future__ import annotations
+
from dataclasses import dataclass
from functools import singledispatchmethod
@@ -8,6 +10,8 @@ from mlia.core.common import DataItem
from mlia.core.data_analysis import Fact
from mlia.core.data_analysis import FactExtractor
from mlia.devices.cortexa.operators import CortexACompatibilityInfo
+from mlia.nn.tensorflow.tflite_compat import TFLiteCompatibilityInfo
+from mlia.nn.tensorflow.tflite_compat import TFLiteConversionErrorCode
class CortexADataAnalyzer(FactExtractor):
@@ -27,6 +31,25 @@ class CortexADataAnalyzer(FactExtractor):
else:
self.add_fact(ModelIsNotCortexACompatible())
+ @analyze_data.register
+ def analyze_tflite_compatibility(self, data_item: TFLiteCompatibilityInfo) -> None:
+ """Analyze TensorFlow Lite compatibility information."""
+ if data_item.compatible:
+ return
+
+ custom_ops, flex_ops = [], []
+ if data_item.conversion_errors:
+ custom_ops = data_item.unsupported_ops_by_code(
+ TFLiteConversionErrorCode.NEEDS_CUSTOM_OPS
+ )
+ flex_ops = data_item.unsupported_ops_by_code(
+ TFLiteConversionErrorCode.NEEDS_FLEX_OPS
+ )
+
+ self.add_fact(
+ ModelIsNotTFLiteCompatible(custom_ops=custom_ops, flex_ops=flex_ops)
+ )
+
@dataclass
class ModelIsCortexACompatible(Fact):
@@ -36,3 +59,11 @@ class ModelIsCortexACompatible(Fact):
@dataclass
class ModelIsNotCortexACompatible(Fact):
"""Model is not compatible with Cortex-A."""
+
+
+@dataclass
+class ModelIsNotTFLiteCompatible(Fact):
+ """Model could not be converted into TensorFlow Lite format."""
+
+ custom_ops: list[str] | None = None
+ flex_ops: list[str] | None = None