ai-edge-quantizer-nightly 0.4.0.dev20250930__py3-none-any.whl → 0.4.0.dev20251002__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ai_edge_quantizer/algorithm_manager.py +40 -3
- ai_edge_quantizer/algorithms/uniform_quantize/common_quantize.py +28 -0
- ai_edge_quantizer/algorithms/uniform_quantize/hadamard_rotation.py +77 -8
- ai_edge_quantizer/algorithms/uniform_quantize/hadamard_rotation_test.py +69 -4
- ai_edge_quantizer/default_policy.py +4 -2
- ai_edge_quantizer/params_generator.py +1 -0
- ai_edge_quantizer/qtyping.py +5 -0
- ai_edge_quantizer/transformation_performer.py +5 -0
- ai_edge_quantizer/transformations/insert_decomposed_hadamard_rotation.py +291 -0
- ai_edge_quantizer/transformations/insert_decomposed_hadamard_rotation_test.py +244 -0
- ai_edge_quantizer/transformations/insert_hadamard_rotation.py +8 -31
- ai_edge_quantizer/transformations/quantize_tensor.py +11 -31
- ai_edge_quantizer/transformations/transformation_utils.py +66 -0
- ai_edge_quantizer/utils/constrained_ops_utils_test.py +1 -1
- ai_edge_quantizer/utils/tfl_flatbuffer_utils.py +1 -0
- ai_edge_quantizer/utils/validation_utils.py +29 -0
- ai_edge_quantizer/utils/validation_utils_test.py +24 -0
- {ai_edge_quantizer_nightly-0.4.0.dev20250930.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info}/METADATA +1 -1
- {ai_edge_quantizer_nightly-0.4.0.dev20250930.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info}/RECORD +22 -20
- {ai_edge_quantizer_nightly-0.4.0.dev20250930.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info}/LICENSE +0 -0
- {ai_edge_quantizer_nightly-0.4.0.dev20250930.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info}/WHEEL +0 -0
- {ai_edge_quantizer_nightly-0.4.0.dev20250930.dist-info → ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info}/top_level.txt +0 -0
|
@@ -210,3 +210,69 @@ def raise_deprecated_error(_: TransformationInput):
|
|
|
210
210
|
'This transformation is deprecated. Please contact AI Edge Quantizer team'
|
|
211
211
|
' if you see this error.'
|
|
212
212
|
)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def pack_data(bitwidth: int, flattened_data: np.ndarray) -> np.ndarray:
|
|
216
|
+
"""Pack the data to the corresponding bit width.
|
|
217
|
+
|
|
218
|
+
Currently only support 4 bits. If no packing is needed, the original data is
|
|
219
|
+
returned.
|
|
220
|
+
|
|
221
|
+
Args:
|
|
222
|
+
bitwidth: Bit width from NonLinearQuantParams.
|
|
223
|
+
flattened_data: The data to be packed.
|
|
224
|
+
|
|
225
|
+
Returns:
|
|
226
|
+
Packed data.
|
|
227
|
+
"""
|
|
228
|
+
if bitwidth == 4:
|
|
229
|
+
even_data = flattened_data[::2] & 0x0F
|
|
230
|
+
odd_data = np.left_shift(flattened_data[1::2], 4).astype(np.uint8)
|
|
231
|
+
if odd_data.shape[0] == even_data.shape[0] - 1:
|
|
232
|
+
odd_data = np.pad(odd_data, (0, 1), constant_values=0)
|
|
233
|
+
return np.bitwise_or(even_data, odd_data)
|
|
234
|
+
else:
|
|
235
|
+
return flattened_data
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def get_producer_schema_op_id(
|
|
239
|
+
transformation: TransformationInput,
|
|
240
|
+
) -> int:
|
|
241
|
+
"""Checks if the tensor's producer matches the given op.
|
|
242
|
+
|
|
243
|
+
Args:
|
|
244
|
+
transformation: The transformation input to check the producer of.
|
|
245
|
+
|
|
246
|
+
Returns:
|
|
247
|
+
The schema op id of the producer op. E.g.
|
|
248
|
+
schema_py_generated.BuiltinOperator.FULLY_CONNECTED.
|
|
249
|
+
"""
|
|
250
|
+
if transformation.producer == -1:
|
|
251
|
+
return False
|
|
252
|
+
else:
|
|
253
|
+
return (
|
|
254
|
+
transformation.op_codes[
|
|
255
|
+
transformation.subgraph.operators[
|
|
256
|
+
transformation.producer
|
|
257
|
+
].opcodeIndex
|
|
258
|
+
].builtinCode
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def get_schema_op_id(
|
|
263
|
+
transformation: TransformationInput, op_id: int
|
|
264
|
+
) -> bool:
|
|
265
|
+
"""Returns the schema op id of the given op.
|
|
266
|
+
|
|
267
|
+
Args:
|
|
268
|
+
transformation: The transformation input to check the consumers of.
|
|
269
|
+
op_id: The op id in the list of operators to check for.
|
|
270
|
+
|
|
271
|
+
Returns:
|
|
272
|
+
The schema op id of the given op.
|
|
273
|
+
"""
|
|
274
|
+
return (
|
|
275
|
+
transformation.op_codes[
|
|
276
|
+
transformation.subgraph.operators[op_id].opcodeIndex
|
|
277
|
+
].builtinCode
|
|
278
|
+
)
|
|
@@ -28,7 +28,7 @@ class ConstrainedOpsUtilsTest(parameterized.TestCase):
|
|
|
28
28
|
dict(
|
|
29
29
|
testcase_name="same_as_input_scale",
|
|
30
30
|
constraint=_OpQuantConstraint.SAME_AS_INPUT_SCALE,
|
|
31
|
-
expected_num_ops=
|
|
31
|
+
expected_num_ops=16,
|
|
32
32
|
),
|
|
33
33
|
dict(
|
|
34
34
|
testcase_name="same_as_output_scale",
|
|
@@ -74,6 +74,7 @@ TFL_OP_NAME_TO_CODE = immutabledict.immutabledict({
|
|
|
74
74
|
_TFLOpName.REDUCE_MIN: schema.BuiltinOperator.REDUCE_MIN,
|
|
75
75
|
_TFLOpName.EQUAL: schema.BuiltinOperator.EQUAL,
|
|
76
76
|
_TFLOpName.NOT_EQUAL: schema.BuiltinOperator.NOT_EQUAL,
|
|
77
|
+
_TFLOpName.MIRROR_PAD: schema.BuiltinOperator.MIRROR_PAD,
|
|
77
78
|
})
|
|
78
79
|
|
|
79
80
|
TFL_OP_CODE_TO_NAME = immutabledict.immutabledict(
|
|
@@ -38,6 +38,8 @@ def get_validation_func(
|
|
|
38
38
|
return mean_squared_difference
|
|
39
39
|
elif func_name == "median_diff_ratio":
|
|
40
40
|
return median_diff_ratio
|
|
41
|
+
elif func_name == "cosine_similarity":
|
|
42
|
+
return cosine_similarity
|
|
41
43
|
else:
|
|
42
44
|
raise ValueError(f"Validation function {func_name} not supported")
|
|
43
45
|
|
|
@@ -99,6 +101,33 @@ def median_diff_ratio(
|
|
|
99
101
|
return median_ratio
|
|
100
102
|
|
|
101
103
|
|
|
104
|
+
def cosine_similarity(
|
|
105
|
+
data1: np._typing.ArrayLike, data2: np._typing.ArrayLike
|
|
106
|
+
) -> float:
|
|
107
|
+
"""Calculates the cosine similarity between data1 & data2.
|
|
108
|
+
|
|
109
|
+
ref: https://en.wikipedia.org/wiki/Cosine_similarity
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
data1: input data to be used for comparison
|
|
113
|
+
data2: input data to be used for comparison, data1 & 2 must be of the same
|
|
114
|
+
shape
|
|
115
|
+
|
|
116
|
+
Returns:
|
|
117
|
+
a float value representing the cosine similarity between data1 & 2
|
|
118
|
+
|
|
119
|
+
Raises:
|
|
120
|
+
Value error if the two inputs don't have the same number of elements
|
|
121
|
+
"""
|
|
122
|
+
data1, data2 = _preprocess_same_size_arrays(data1, data2)
|
|
123
|
+
# special handling for tensor of size 0
|
|
124
|
+
if data1.size == 0:
|
|
125
|
+
return float(0)
|
|
126
|
+
return float(
|
|
127
|
+
np.dot(data1, data2) / (np.linalg.norm(data1) * np.linalg.norm(data2))
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
|
|
102
131
|
def _preprocess_same_size_arrays(
|
|
103
132
|
data1: np._typing.ArrayLike, data2: np._typing.ArrayLike
|
|
104
133
|
) -> Tuple[np.ndarray, np.ndarray]:
|
|
@@ -82,6 +82,30 @@ class ValidationUtilTest(googletest.TestCase):
|
|
|
82
82
|
result = validation_utils.median_diff_ratio(data1, data2)
|
|
83
83
|
self.assertEqual(result, 0)
|
|
84
84
|
|
|
85
|
+
def test_cosine_similarity(self):
|
|
86
|
+
data1 = [1, 2, 3]
|
|
87
|
+
data2 = [1, 2, 3]
|
|
88
|
+
result = validation_utils.cosine_similarity(data1, data2)
|
|
89
|
+
self.assertAlmostEqual(result, 1.0, 6)
|
|
90
|
+
|
|
91
|
+
def test_cosine_similarity_perpendicular(self):
|
|
92
|
+
data1 = [1, 0, 0]
|
|
93
|
+
data2 = [0, 1, 0]
|
|
94
|
+
result = validation_utils.cosine_similarity(data1, data2)
|
|
95
|
+
self.assertAlmostEqual(result, 0.0, 6)
|
|
96
|
+
|
|
97
|
+
def test_cosine_similarity_multidim(self):
|
|
98
|
+
data1 = [[1, 2], [4, 5]]
|
|
99
|
+
data2 = [[1, 3], [2, 2]]
|
|
100
|
+
result = validation_utils.cosine_similarity(data1, data2)
|
|
101
|
+
self.assertAlmostEqual(result, 0.86881, 6)
|
|
102
|
+
|
|
103
|
+
def test_cosine_similarity_0d(self):
|
|
104
|
+
data1 = []
|
|
105
|
+
data2 = []
|
|
106
|
+
result = validation_utils.cosine_similarity(data1, data2)
|
|
107
|
+
self.assertEqual(result, 0)
|
|
108
|
+
|
|
85
109
|
|
|
86
110
|
if __name__ == "__main__":
|
|
87
111
|
googletest.main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ai-edge-quantizer-nightly
|
|
3
|
-
Version: 0.4.0.
|
|
3
|
+
Version: 0.4.0.dev20251002
|
|
4
4
|
Summary: A quantizer for advanced developers to quantize converted AI Edge models.
|
|
5
5
|
Home-page: https://github.com/google-ai-edge/ai-edge-quantizer
|
|
6
6
|
Keywords: On-Device ML,AI,Google,TFLite,Quantization,LLMs,GenAI
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
ai_edge_quantizer/__init__.py,sha256=4pFSkukSwahYyzwqia0yPRyz8TnFQfGRthVJhYpMWas,793
|
|
2
|
-
ai_edge_quantizer/algorithm_manager.py,sha256=
|
|
2
|
+
ai_edge_quantizer/algorithm_manager.py,sha256=Ri4bNqbSTmtlsYZiJYHtkjNEsl8h5tZ_1uV_stJ3HUY,16156
|
|
3
3
|
ai_edge_quantizer/algorithm_manager_api.py,sha256=u903TG0s1uIDhJqfeJne3CFl8A93phZrwgV2-hwdcXU,9247
|
|
4
4
|
ai_edge_quantizer/algorithm_manager_api_test.py,sha256=w6bSONvXkX6bzXAGc0-7b6gNDt9oz9ieq97KP8Sg_JU,7666
|
|
5
5
|
ai_edge_quantizer/calibrator.py,sha256=Sms7_AIHPH9G5xFaz5Ef3a5gPhxuIWQI8d2LUM8C96I,12071
|
|
6
6
|
ai_edge_quantizer/calibrator_test.py,sha256=ZLzIMWB2FSFU4TOatDioYuwp_kLh8iSCefZ5_Q9FU7s,11900
|
|
7
7
|
ai_edge_quantizer/conftest.py,sha256=SxCz-5LlRD_lQm4hQc4c6IGG7DS8d7IyEWY9gnscPN0,794
|
|
8
|
-
ai_edge_quantizer/default_policy.py,sha256=
|
|
8
|
+
ai_edge_quantizer/default_policy.py,sha256=6eJA0eX5Npv8lw_0EDS5iPldInoURQKEDhDZ272VG1Q,11770
|
|
9
9
|
ai_edge_quantizer/model_modifier.py,sha256=teGa8I6kGvn6TQY6Xv53YFIc_pQEhNvM9Zb4bvhezyw,7110
|
|
10
10
|
ai_edge_quantizer/model_modifier_test.py,sha256=cJd04SLOG-fQZZNZPcisoBLx3cLtWEwGqUBbLb-pif4,4751
|
|
11
11
|
ai_edge_quantizer/model_validator.py,sha256=Hj0_5o-Oa3dSlJ3ryVjRhvsyelHNyek1GrtG9buMczg,13153
|
|
12
12
|
ai_edge_quantizer/model_validator_test.py,sha256=EeqOP_mrZsnZ3rug756s0ryDDqd2KgIDld5Lm_gDuWY,13020
|
|
13
|
-
ai_edge_quantizer/params_generator.py,sha256=
|
|
13
|
+
ai_edge_quantizer/params_generator.py,sha256=0w-sDGk84sVNkXoduon1wDqq30sGOHVgBVbdg44QVF4,20153
|
|
14
14
|
ai_edge_quantizer/params_generator_test.py,sha256=RDYoRZDJfEZRtjlTAU2kZ_4t3JHOqEHxfJX9V4ETAhg,40597
|
|
15
|
-
ai_edge_quantizer/qtyping.py,sha256=
|
|
15
|
+
ai_edge_quantizer/qtyping.py,sha256=7aEMPA4qr4CGD3NXtZgG2fDoQX5NzK9jwSv1yWNqQV4,17149
|
|
16
16
|
ai_edge_quantizer/quantizer.py,sha256=ckAEOnnBxuCKZuvlzdChevCKPuE-IeDPHCNtFTWr250,17857
|
|
17
17
|
ai_edge_quantizer/quantizer_test.py,sha256=m6f4ayyaF3yQb9i4V0aFAbmGw0OKZ2Zam1RoTPh-u24,22917
|
|
18
18
|
ai_edge_quantizer/recipe.py,sha256=MEkfQ2Sg3KAE9LAORHWcbjYNPg06EUbwc1d-VspQA2U,6461
|
|
@@ -21,19 +21,19 @@ ai_edge_quantizer/recipe_manager_test.py,sha256=qjgGUF-wggXnSXqZ5khmqrDMIQI5CShk
|
|
|
21
21
|
ai_edge_quantizer/recipe_test.py,sha256=QisyaTol8JRZFcGOGyee7QRCvqj5VbF4guKWdIoMUOE,6213
|
|
22
22
|
ai_edge_quantizer/transformation_instruction_generator.py,sha256=O0U2aZcB8aXQgOV8r9g1rGNzDUiuI5Ta53XnxZbVffE,31576
|
|
23
23
|
ai_edge_quantizer/transformation_instruction_generator_test.py,sha256=KW5-WoTTo9IqLEVnWxVC8ut8eWLi_91xfKgGqVQ9QDk,54635
|
|
24
|
-
ai_edge_quantizer/transformation_performer.py,sha256=
|
|
24
|
+
ai_edge_quantizer/transformation_performer.py,sha256=mFsig0E5Isy7cnG1wMO2jzBn3Wql8fElM_PSpaL8okw,13354
|
|
25
25
|
ai_edge_quantizer/transformation_performer_test.py,sha256=xk6A3LStCyPclN51--9uO7XjSxNfZmpdfvrzOL0maNM,20349
|
|
26
26
|
ai_edge_quantizer/algorithms/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V7J-4m8,676
|
|
27
27
|
ai_edge_quantizer/algorithms/nonlinear_quantize/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V7J-4m8,676
|
|
28
28
|
ai_edge_quantizer/algorithms/nonlinear_quantize/float_casting.py,sha256=Bs9CK7wZAw6jNaZ8xEtbwO2vM34VYXNZSMVWvxJo9nw,9297
|
|
29
29
|
ai_edge_quantizer/algorithms/nonlinear_quantize/float_casting_test.py,sha256=EqIHGEZ1LgUrTN7zf880RuAzEv3Qy7kgh5ivObJGHSo,22646
|
|
30
30
|
ai_edge_quantizer/algorithms/uniform_quantize/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V7J-4m8,676
|
|
31
|
-
ai_edge_quantizer/algorithms/uniform_quantize/common_quantize.py,sha256=
|
|
31
|
+
ai_edge_quantizer/algorithms/uniform_quantize/common_quantize.py,sha256=rUHraqNi0iJ0AyUQfAiYkyXG2rSy7GlhnqmwJeoLStg,38952
|
|
32
32
|
ai_edge_quantizer/algorithms/uniform_quantize/common_quantize_test.py,sha256=GGf_n3wIeg3GB_eGsmyNJ0fTcxgpeMMbugTMRONK6TQ,3553
|
|
33
33
|
ai_edge_quantizer/algorithms/uniform_quantize/dequantized_weight_recovery.py,sha256=BDdn_uBZakfHyzdMJPKadsOqxqyC-s6W2ZzFH99L4fE,8652
|
|
34
34
|
ai_edge_quantizer/algorithms/uniform_quantize/dequantized_weight_recovery_test.py,sha256=sT5eX5TLZEHTtPfnSkCPDlS0sQxlTFWbCsbvOuj--yY,8889
|
|
35
|
-
ai_edge_quantizer/algorithms/uniform_quantize/hadamard_rotation.py,sha256=
|
|
36
|
-
ai_edge_quantizer/algorithms/uniform_quantize/hadamard_rotation_test.py,sha256=
|
|
35
|
+
ai_edge_quantizer/algorithms/uniform_quantize/hadamard_rotation.py,sha256=qxt9CPDcidVWIxp5nSWPN2hKKj1XZcsOOLBd2SYIvW0,14572
|
|
36
|
+
ai_edge_quantizer/algorithms/uniform_quantize/hadamard_rotation_test.py,sha256=mgv6aGIqQouxfA8_GacuGdOftvL75XBF1_h5tlCCYJQ,15468
|
|
37
37
|
ai_edge_quantizer/algorithms/uniform_quantize/mse.py,sha256=qiIyzogATGVxjYwxzH0cZvgwPSPBJv_3y8NSumHZXTk,4561
|
|
38
38
|
ai_edge_quantizer/algorithms/uniform_quantize/mse_test.py,sha256=-_P4jQJ7gVo0FNSapP3sIGcnhwfjQHW1AKLfoiAlS_s,7142
|
|
39
39
|
ai_edge_quantizer/algorithms/uniform_quantize/naive_min_max_quantize.py,sha256=1sB2j1vlvvWDKyjcGvA_JLCpN2KbCmMslGCBUc4--V4,8461
|
|
@@ -52,28 +52,30 @@ ai_edge_quantizer/transformations/duplicate_buffer.py,sha256=TvTHbm24IiICNkWOlvR
|
|
|
52
52
|
ai_edge_quantizer/transformations/duplicate_buffer_test.py,sha256=YYWl3Q5WF60s8T8pLzzA8TCSxz-i7dqc03dJt1LtMw4,3880
|
|
53
53
|
ai_edge_quantizer/transformations/duplicate_tensor.py,sha256=WKhf2LIAL0MnZe88b6942A37lvHXe1cFjUDqE5VNmvU,2490
|
|
54
54
|
ai_edge_quantizer/transformations/duplicate_tensor_test.py,sha256=s-RqSxNBMfVJyCunXz2eb7-KA6UiBmbOmL7phLslENQ,5056
|
|
55
|
-
ai_edge_quantizer/transformations/
|
|
55
|
+
ai_edge_quantizer/transformations/insert_decomposed_hadamard_rotation.py,sha256=D47xTbMQM-R2X3SwSG1RjOAKxvGp76y61aaZA1VyN8E,10791
|
|
56
|
+
ai_edge_quantizer/transformations/insert_decomposed_hadamard_rotation_test.py,sha256=Z9Nr5e5aEeEMahhhizFyOkAMEXkEg1EKYZ_bGb5Vbvw,8993
|
|
57
|
+
ai_edge_quantizer/transformations/insert_hadamard_rotation.py,sha256=5D5WwrJCE6hQoANbMwa6YGBbjcG5HcL_rkkoXIAIW9w,6883
|
|
56
58
|
ai_edge_quantizer/transformations/insert_hadamard_rotation_test.py,sha256=iV1p3nZfHUATV2YRoBOYurnu3pLy8n3aFppLWGQOPdA,7268
|
|
57
59
|
ai_edge_quantizer/transformations/quant_insert.py,sha256=jn6HsJaV-sqBiFPY-Aqbd64t8zgcYVkEkZI375x_FWY,3958
|
|
58
60
|
ai_edge_quantizer/transformations/quant_insert_test.py,sha256=X9ptPDvJCFkR5tejKnD1SlHFGPazQTW-wNNMV9MEAuw,10107
|
|
59
|
-
ai_edge_quantizer/transformations/quantize_tensor.py,sha256=
|
|
61
|
+
ai_edge_quantizer/transformations/quantize_tensor.py,sha256=unqInO0we6_cgwPjtHB3tLWIHPajfNuJSLGW-IFnI9E,7029
|
|
60
62
|
ai_edge_quantizer/transformations/quantize_tensor_test.py,sha256=mHLO3_MRt36A8-ZN8ADn5tBBJlqjTWa7ZUN8Mmu5Rcw,9116
|
|
61
|
-
ai_edge_quantizer/transformations/transformation_utils.py,sha256=
|
|
63
|
+
ai_edge_quantizer/transformations/transformation_utils.py,sha256=IKrtXJNH0msiTcI7KXkCYn2EkzmbZKWMMX_r5PMEx2U,8857
|
|
62
64
|
ai_edge_quantizer/transformations/transformation_utils_test.py,sha256=MWgq29t7rvxRQIfi4ny9IoODFCTcbpjnIwoCL40zDKk,8698
|
|
63
65
|
ai_edge_quantizer/utils/__init__.py,sha256=lpq1g2ayg3lCPLy79t2VicYcnGKw64FfYIj1V7J-4m8,676
|
|
64
66
|
ai_edge_quantizer/utils/calibration_utils.py,sha256=iMf_bSCf-O86MzDt5D9hLKqbTydqLwirluaC6BJ9yHo,11553
|
|
65
67
|
ai_edge_quantizer/utils/calibration_utils_test.py,sha256=4BlksXl7b4yptL8xPR67hmJCnjhN9V10a2PunzfHrUE,9372
|
|
66
68
|
ai_edge_quantizer/utils/constrained_ops_utils.py,sha256=EAITCf7Ku_PFZcw3K-wd-8hGbyuRd5W5UtNdGvalwAE,4478
|
|
67
|
-
ai_edge_quantizer/utils/constrained_ops_utils_test.py,sha256=
|
|
69
|
+
ai_edge_quantizer/utils/constrained_ops_utils_test.py,sha256=HNZstSm6-7xgSmM-7ilHRjuOKsq6tivpxayphm9Oghs,1756
|
|
68
70
|
ai_edge_quantizer/utils/test_utils.py,sha256=a4Nk-wbeB09dFjTDZiA0K67d26j5DD0UDH_GIVmVG_4,8685
|
|
69
|
-
ai_edge_quantizer/utils/tfl_flatbuffer_utils.py,sha256=
|
|
71
|
+
ai_edge_quantizer/utils/tfl_flatbuffer_utils.py,sha256=LN-WonrcJLP9bB4lULd5VIg_8YLTcp891ZuDZ5nDGe8,12006
|
|
70
72
|
ai_edge_quantizer/utils/tfl_flatbuffer_utils_test.py,sha256=K1SbK8q92qYVtiVj0I0GtugsPTkpIpEKv9zakvFV_Sc,8555
|
|
71
73
|
ai_edge_quantizer/utils/tfl_interpreter_utils.py,sha256=EoVjI_hplX_Rml3hfRsGmQOihexmizeJqt4SQcET9aA,14925
|
|
72
74
|
ai_edge_quantizer/utils/tfl_interpreter_utils_test.py,sha256=6fjkM-rycZ95L4yfvlr0TN6RlrhfPzxNUYrZaYO_F0A,12013
|
|
73
|
-
ai_edge_quantizer/utils/validation_utils.py,sha256=
|
|
74
|
-
ai_edge_quantizer/utils/validation_utils_test.py,sha256=
|
|
75
|
-
ai_edge_quantizer_nightly-0.4.0.
|
|
76
|
-
ai_edge_quantizer_nightly-0.4.0.
|
|
77
|
-
ai_edge_quantizer_nightly-0.4.0.
|
|
78
|
-
ai_edge_quantizer_nightly-0.4.0.
|
|
79
|
-
ai_edge_quantizer_nightly-0.4.0.
|
|
75
|
+
ai_edge_quantizer/utils/validation_utils.py,sha256=yJH9Cvepr_XWn-3Hsh91j7HuC5iLQHAyskyQ48bGNoc,4797
|
|
76
|
+
ai_edge_quantizer/utils/validation_utils_test.py,sha256=1sblJWHLTYTbn1Qi9rwnrREOSXRy5KwHAWSwgI1e_aU,3697
|
|
77
|
+
ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
78
|
+
ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info/METADATA,sha256=gx_gBIYVh7XDUrBl-uDmPRRRrawHIroH_14pjZmhL4w,1508
|
|
79
|
+
ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
80
|
+
ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info/top_level.txt,sha256=8QTfPnFXNVUhScFLaa-NWZMFWMn72M50DVPubpwWB1g,18
|
|
81
|
+
ai_edge_quantizer_nightly-0.4.0.dev20251002.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|