aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/nn/tensorflow/tflite_metrics.py
diff options
context:
space:
mode:
authorDmitrii Agibov <dmitrii.agibov@arm.com>2022-09-08 14:24:39 +0100
committerDmitrii Agibov <dmitrii.agibov@arm.com>2022-09-09 17:21:48 +0100
commitf5b293d0927506c2a979a091bf0d07ecc78fa181 (patch)
tree4de585b7cb6ed34da8237063752270189a730a41 /src/mlia/nn/tensorflow/tflite_metrics.py
parentcde0c6ee140bd108849bff40467d8f18ffc332ef (diff)
downloadmlia-f5b293d0927506c2a979a091bf0d07ecc78fa181.tar.gz
MLIA-386 Simplify typing in the source code
- Enable deferred annotations evaluation - Use builtin types for type hints whenever possible - Use | syntax for union types - Rename mlia.core._typing into mlia.core.typing Change-Id: I3f6ffc02fa069c589bdd9e8bddbccd504285427a
Diffstat (limited to 'src/mlia/nn/tensorflow/tflite_metrics.py')
-rw-r--r--src/mlia/nn/tensorflow/tflite_metrics.py20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/mlia/nn/tensorflow/tflite_metrics.py b/src/mlia/nn/tensorflow/tflite_metrics.py
index 3f41487..0af7500 100644
--- a/src/mlia/nn/tensorflow/tflite_metrics.py
+++ b/src/mlia/nn/tensorflow/tflite_metrics.py
@@ -8,13 +8,13 @@ These metrics include:
* Unique weights (clusters) (per layer)
* gzip compression ratio
"""
+from __future__ import annotations
+
import os
import typing
from enum import Enum
from pprint import pprint
from typing import Any
-from typing import List
-from typing import Optional
import numpy as np
import tensorflow as tf
@@ -42,7 +42,7 @@ def calculate_num_unique_weights(weights: np.ndarray) -> int:
return num_unique_weights
-def calculate_num_unique_weights_per_axis(weights: np.ndarray, axis: int) -> List[int]:
+def calculate_num_unique_weights_per_axis(weights: np.ndarray, axis: int) -> list[int]:
"""Calculate unique weights per quantization axis."""
# Make quantized dimension the first dimension
weights_trans = np.swapaxes(weights, 0, axis)
@@ -74,7 +74,7 @@ class SparsityAccumulator:
def calculate_sparsity(
- weights: np.ndarray, accumulator: Optional[SparsityAccumulator] = None
+ weights: np.ndarray, accumulator: SparsityAccumulator | None = None
) -> float:
"""
Calculate the sparsity for the given weights.
@@ -110,9 +110,7 @@ class TFLiteMetrics:
* File compression via gzip
"""
- def __init__(
- self, tflite_file: str, ignore_list: Optional[List[str]] = None
- ) -> None:
+ def __init__(self, tflite_file: str, ignore_list: list[str] | None = None) -> None:
"""Load the TFLite file and filter layers."""
self.tflite_file = tflite_file
if ignore_list is None:
@@ -159,7 +157,7 @@ class TFLiteMetrics:
acc(self.get_tensor(details))
return acc.sparsity()
- def calc_num_clusters_per_axis(self, details: dict) -> List[int]:
+ def calc_num_clusters_per_axis(self, details: dict) -> list[int]:
"""Calculate number of clusters per axis."""
quant_params = details["quantization_parameters"]
per_axis = len(quant_params["zero_points"]) > 1
@@ -178,14 +176,14 @@ class TFLiteMetrics:
aggregation_func = self.calc_num_clusters_per_axis
elif mode == ReportClusterMode.NUM_CLUSTERS_MIN_MAX:
- def cluster_min_max(details: dict) -> List[int]:
+ def cluster_min_max(details: dict) -> list[int]:
num_clusters = self.calc_num_clusters_per_axis(details)
return [min(num_clusters), max(num_clusters)]
aggregation_func = cluster_min_max
elif mode == ReportClusterMode.NUM_CLUSTERS_HISTOGRAM:
- def cluster_hist(details: dict) -> List[int]:
+ def cluster_hist(details: dict) -> list[int]:
num_clusters = self.calc_num_clusters_per_axis(details)
max_num = max(num_clusters)
hist = [0] * (max_num)
@@ -289,7 +287,7 @@ class TFLiteMetrics:
print(f"- {self._prettify_name(name)}: {nums}")
@staticmethod
- def _print_in_outs(ios: List[dict], verbose: bool = False) -> None:
+ def _print_in_outs(ios: list[dict], verbose: bool = False) -> None:
for item in ios:
if verbose:
pprint(item)