mct-nightly 1.9.0.20230814.post352__py3-none-any.whl → 1.9.0.20230816.post359__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.
Files changed (34) hide show
  1. {mct_nightly-1.9.0.20230814.post352.dist-info → mct_nightly-1.9.0.20230816.post359.dist-info}/METADATA +4 -4
  2. {mct_nightly-1.9.0.20230814.post352.dist-info → mct_nightly-1.9.0.20230816.post359.dist-info}/RECORD +34 -34
  3. model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +4 -6
  4. model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +7 -1
  5. model_compression_toolkit/core/keras/back2framework/model_gradients.py +3 -3
  6. model_compression_toolkit/core/keras/default_framework_info.py +2 -2
  7. model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +3 -3
  8. model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +8 -3
  9. model_compression_toolkit/core/keras/keras_implementation.py +4 -3
  10. model_compression_toolkit/core/keras/keras_node_prior_info.py +2 -2
  11. model_compression_toolkit/core/keras/reader/common.py +6 -6
  12. model_compression_toolkit/core/keras/reader/connectivity_handler.py +2 -3
  13. model_compression_toolkit/core/keras/reader/node_builder.py +4 -4
  14. model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +7 -3
  15. model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +9 -2
  16. model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +6 -6
  17. model_compression_toolkit/gptq/keras/gptq_training.py +2 -2
  18. model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +4 -4
  19. model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +2 -1
  20. model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v1/tpc_keras.py +2 -3
  21. model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v2/tpc_keras.py +3 -4
  22. model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3/tpc_keras.py +3 -4
  23. model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3_lut/tpc_keras.py +3 -4
  24. model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4/tpc_keras.py +2 -2
  25. model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4_lut/tpc_keras.py +2 -2
  26. model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v5/tpc_keras.py +2 -2
  27. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +3 -2
  28. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +2 -2
  29. model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +2 -3
  30. model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +3 -3
  31. model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +10 -1
  32. {mct_nightly-1.9.0.20230814.post352.dist-info → mct_nightly-1.9.0.20230816.post359.dist-info}/LICENSE.md +0 -0
  33. {mct_nightly-1.9.0.20230814.post352.dist-info → mct_nightly-1.9.0.20230816.post359.dist-info}/WHEEL +0 -0
  34. {mct_nightly-1.9.0.20230814.post352.dist-info → mct_nightly-1.9.0.20230816.post359.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mct-nightly
3
- Version: 1.9.0.20230814.post352
3
+ Version: 1.9.0.20230816.post359
4
4
  Summary: A Model Compression Toolkit for neural networks
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -91,9 +91,9 @@ MCT supports compressing models built with the TensorFlow or PyTorch frameworks,
91
91
 
92
92
  | TensorFlow Version | PyTorch Version |
93
93
  |------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
94
- | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_tf212.yml/badge.svg) | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_torch1_13.yml/badge.svg) |
95
- | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_tf211.yml/badge.svg) | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_torch1_12.yml/badge.svg) |
96
- | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_tf210.yml/badge.svg) | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_torch1_11.yml/badge.svg) |
94
+ | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_tf213.yml/badge.svg) | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_torch1_13.yml/badge.svg) |
95
+ | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_tf212.yml/badge.svg) | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_torch1_12.yml/badge.svg) |
96
+ | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_tf211.yml/badge.svg) | ![tests](https://github.com/sony/model_optimization/actions/workflows/run_tests_torch1_11.yml/badge.svg) |
97
97
 
98
98
 
99
99
  ## Supported Features
@@ -129,19 +129,19 @@ model_compression_toolkit/core/common/visualization/tensorboard_writer.py,sha256
129
129
  model_compression_toolkit/core/keras/__init__.py,sha256=mjbqLD-KcG3eNeCYpu1GBS7VclGVOQ63x2p6mAAuba4,698
130
130
  model_compression_toolkit/core/keras/constants.py,sha256=nbty5PUcLhC9aTuAemXTEmKcPF--7a5adO1-nQsgB9A,2664
131
131
  model_compression_toolkit/core/keras/custom_layer_validation.py,sha256=f-b14wuiIgitBe7d0MmofYhDCTO3IhwJgwrh-Hq_t_U,1192
132
- model_compression_toolkit/core/keras/default_framework_info.py,sha256=QsaZRdWJqz4ev3ZQZCkUfg9Imu8iyEL_6NRFCSVHQkE,4999
133
- model_compression_toolkit/core/keras/keras_implementation.py,sha256=rYiN1MaKkz183wvvmUrbQL2crROBBQSA70acTmC3mn8,27448
132
+ model_compression_toolkit/core/keras/default_framework_info.py,sha256=HLLO28tsbb9tHYQ05grUr3oJTRKdS520QnyGUYgzRK0,4994
133
+ model_compression_toolkit/core/keras/keras_implementation.py,sha256=9qD5s9XmxGzTd_6MG4tWj_n-nibHOf7XBr8WYzwTY_I,27439
134
134
  model_compression_toolkit/core/keras/keras_model_validation.py,sha256=1wNV2clFdC9BzIELRLSO2uKf0xqjLqlkTJudwtCeaJk,1722
135
- model_compression_toolkit/core/keras/keras_node_prior_info.py,sha256=KuC6yWUUASoOCxK5ZybI7dVydveLCovUTfPmIig9CTg,3941
135
+ model_compression_toolkit/core/keras/keras_node_prior_info.py,sha256=f6o5Fmpw0aDrO704_A-SqBrKSO1iNEOyofP9pm3g8yg,3936
136
136
  model_compression_toolkit/core/keras/kpi_data_facade.py,sha256=rArrfMtxWGR1P4nhKKxqh6fo7pauRDzkRsZIh_SXxO4,8502
137
137
  model_compression_toolkit/core/keras/tf_tensor_numpy.py,sha256=BauH-Ssoiuv5wu81fk1bm9HO_0yR0oTwKyLkXgE3qSE,2022
138
138
  model_compression_toolkit/core/keras/back2framework/__init__.py,sha256=rhIiXg_nBgUZ-baE3M6SzCuQbcnq4iebY1jtJBvKHOM,808
139
139
  model_compression_toolkit/core/keras/back2framework/factory_model_builder.py,sha256=GSh1Piz5qpA7IlvHTMqUvPn7WBDa0IHEDZdd_TzY9XA,2226
140
140
  model_compression_toolkit/core/keras/back2framework/float_model_builder.py,sha256=9SFHhX-JnkB8PvYIIHRYlReBDI_RkZY9LditzW_ElLk,2444
141
141
  model_compression_toolkit/core/keras/back2framework/instance_builder.py,sha256=TOn_MEp0UCDshy6mKiHeHuKGCWW_Xz81V0o_POVmgLc,4508
142
- model_compression_toolkit/core/keras/back2framework/keras_model_builder.py,sha256=0FB4TdbGp34ejBhOfqZmi_249YokaypLSpBbAi8WIdk,16109
143
- model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py,sha256=5getD3pU1ma2MqAKtHlNud_uCCW1UC42zJLGnXVqFIE,14442
144
- model_compression_toolkit/core/keras/back2framework/model_gradients.py,sha256=d7lmx6da978Oe62mQwa8aloQayd4Nygrs0sxBE0qIVQ,15431
142
+ model_compression_toolkit/core/keras/back2framework/keras_model_builder.py,sha256=l2l7JoyZLfKt10xuX4s8--SWpxlhMV1ZHOme2rmnaww,15916
143
+ model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py,sha256=DtH6c_eKYw6rq8oQcX-R6Ddbz3uX8v6jmiHeowerL9w,14616
144
+ model_compression_toolkit/core/keras/back2framework/model_gradients.py,sha256=IT5LJoSFqIqGFVtQpu-LUQ10TJyaZiRPnImqwQCI0iA,15428
145
145
  model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py,sha256=5wFb4nx_F0Wu4c8pLf6n6OzxOHtpOJ6_3mQsNSXIudU,2481
146
146
  model_compression_toolkit/core/keras/graph_substitutions/__init__.py,sha256=mjbqLD-KcG3eNeCYpu1GBS7VclGVOQ63x2p6mAAuba4,698
147
147
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py,sha256=mjbqLD-KcG3eNeCYpu1GBS7VclGVOQ63x2p6mAAuba4,698
@@ -151,13 +151,13 @@ model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm
151
151
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py,sha256=5df_xGfXkqNub4xVRnCWQvSohWqdv12axjJ6edVU2H0,2478
152
152
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py,sha256=Yj59BMBrITJnXJHH-7de91LJwH_1l1WhY1udSQjdoi4,5598
153
153
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py,sha256=Yl72Io4-etnsOXfMKAZmC2lDzmskxZu5gey7IBcUukU,5925
154
- model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py,sha256=VpJwWWW6zPkb7_giaRJ801qJ2DIKkQiBYN0d7NvDWIQ,26778
154
+ model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py,sha256=aAG5wrcnnydn1pPYqvH56LWsQXjSODbsoNbX_jtQGP4,26759
155
155
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py,sha256=IdKOg6AWZWMcmDbOuNdxetS5_zTarXIIffdYL7JTdvk,3872
156
156
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_relu_upper_bound.py,sha256=cJQTDzTDQKAJ7EQ20tfsmReGA_OoTIN793MwVe1Ok8g,2387
157
157
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py,sha256=6PnPIC5ax7uTzcoslW7ropIu7vVmo70AD4QYcYnQV20,3176
158
158
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py,sha256=ryes9y1ie-vjBGso2TeO4EXxVk69Ew3iSAhshPz1Ou4,5542
159
159
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py,sha256=OqtLx3yeUXlE1DfA1dA4oWk0yVSMPSgvYb0dQ8Ytb5E,7730
160
- model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py,sha256=g675BwcNWr6SqEW9J-Ys2i8T4XaxzXpjYNUlR0gtHfM,10781
160
+ model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py,sha256=6vEakr0jWrccU7dfubRCiNg6TFe6whte_pbTiXMJIvc,11045
161
161
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py,sha256=Qk5seDALj_th9dHJehY7ynZjvFjVfCv_mJ1enA5hX0c,1623
162
162
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py,sha256=wH9ocMLL725-uUPU-zCxdd8NwT5nyd0ZShmI7iuTwF8,1462
163
163
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py,sha256=rjIheZW7LbSPv9bzMSmC8wl6UUxaTkd4J2IHinObT-Y,1814
@@ -169,9 +169,9 @@ model_compression_toolkit/core/keras/quantizer/base_quantizer.py,sha256=eMRjAUU1
169
169
  model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py,sha256=Oi64CD83OopPoQNAarl2MJRbCKujU2W8Wdrs9KOPNWk,6151
170
170
  model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py,sha256=Up3-sbuAcaJ6kfe7Sz3XN6iiJ9hlxzOMncLCFEXJFjk,4475
171
171
  model_compression_toolkit/core/keras/reader/__init__.py,sha256=mjbqLD-KcG3eNeCYpu1GBS7VclGVOQ63x2p6mAAuba4,698
172
- model_compression_toolkit/core/keras/reader/common.py,sha256=ScJaCiM8FuisN3sLbVsMQiIzkFlzr-gYEeL8M5lkoew,2627
173
- model_compression_toolkit/core/keras/reader/connectivity_handler.py,sha256=83Abmg-AILnN6NHJexI226ZaHEblLOX3H9sH6vXFQhA,11418
174
- model_compression_toolkit/core/keras/reader/node_builder.py,sha256=3wHqvJ8AA7ZEtYWRXYIlIDOLwdixha3Nt1cyCgdpGpk,6408
172
+ model_compression_toolkit/core/keras/reader/common.py,sha256=z0PMoP_HjndN3upYTEQS6yxSGqQsM74V3uRHt_Hx3jw,2490
173
+ model_compression_toolkit/core/keras/reader/connectivity_handler.py,sha256=AgF6qXZOJMeXvc-pBnGY23BJz7wPBx2aTYxHiO8efec,11303
174
+ model_compression_toolkit/core/keras/reader/node_builder.py,sha256=eP9FOcMePxXOHiDr-BGn3YKVhWc11HmN8UIcQyMgJAg,6368
175
175
  model_compression_toolkit/core/keras/reader/reader.py,sha256=wS9UQ2wJKnkZYe9JHwQp7ygDr6CRlzrxmIyLDv1Qz6U,8109
176
176
  model_compression_toolkit/core/keras/reader/nested_model/__init__.py,sha256=mjbqLD-KcG3eNeCYpu1GBS7VclGVOQ63x2p6mAAuba4,698
177
177
  model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py,sha256=K6KAH9o8KSG6baLmhKoCrYK-i-wb6gRKiZmoijFqEYA,7906
@@ -235,7 +235,7 @@ model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py,sha256
235
235
  model_compression_toolkit/exporter/model_exporter/keras/__init__.py,sha256=uZ2RigbY9O2PJ0Il8wPpS_s7frgg9WUGd_SHeKGyl1A,699
236
236
  model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py,sha256=93UkXZEm6sTCATUwLu4exVyIFAFBzbA4Yg_Tr89Rb9U,1495
237
237
  model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py,sha256=coIfpkMTfPImzPb1LpK_HYzyZ5h5cGBbPoJGHHcoIC8,966
238
- model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py,sha256=8gGZVN45rOSdt9kKRmx1w0aS2t3HqvxKB1v1z1ow7fg,11100
238
+ model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py,sha256=o8IyEgHdrjk2OvWBrxl11oGH0lVvqX8aynVUYCAD4mk,11285
239
239
  model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py,sha256=sgTlqNjHSf0vVzQpq2811WL6k7SIo_QZaV7TxUtIC8I,3043
240
240
  model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py,sha256=nGtpDTeH5Tdp7sjyuXsy_9TPpijDYp4nkz366DUUJ0Q,8048
241
241
  model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py,sha256=mGaIaMGQ3qVWMEbosyL0uYc-3KsjXumexoaTbeue1X4,5982
@@ -247,7 +247,7 @@ model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscri
247
247
  model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py,sha256=rzUd377eyHHo0dD6z0efTTR-8Bo6Ebqo0X8ECL-Q7Gw,5866
248
248
  model_compression_toolkit/exporter/model_wrapper/__init__.py,sha256=7CF2zvpTrIEm8qnbuHnLZyTZkwBBxV24V8QA0oxGbh0,1187
249
249
  model_compression_toolkit/exporter/model_wrapper/keras/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
250
- model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py,sha256=XMXcszmMSEgeIc1tCNZqWjsyFt9ZmcgfWZQXDqnDMjM,3509
250
+ model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py,sha256=LzwUapHiTuXM8b7qFkoK5XvkNNJynhdw4L1A6XTKTJs,3767
251
251
  model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
252
252
  model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py,sha256=P_701NG1OYwyxgbtPSjb-OYseDeiHjye8m9wjpAl6es,4253
253
253
  model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py,sha256=VFX8rvlaGTK-k-3g0ayAL_qJJR_6wtS54tn9RzxKev4,8755
@@ -256,7 +256,7 @@ model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py,sha256=Rf1R
256
256
  model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py,sha256=gvX5ILs5vjQ_F_dq5KaFs0GOQEq9gYXO5a6YZlYY8h4,3449
257
257
  model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
258
258
  model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py,sha256=SJ5fetbUMkmB0tkHkmVhMrLksh7eqMQJLFuMD08ZKWM,3921
259
- model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py,sha256=66QXUQI1yvov9QXCW1s8LLN9N7gFwvVrPJDfzHayWZM,8635
259
+ model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py,sha256=62dI97t4N7TO7xDYnn3992B17XYKryyO9ZhxV1vdThY,8626
260
260
  model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizers.py,sha256=hinP-wtyxZyoW860GdJAk6M3iPjmwwPXQTUxd56yhq8,2086
261
261
  model_compression_toolkit/gptq/__init__.py,sha256=2xos6AJziEy-eK91XtIJlunf8LhK4OayU7d6CQvXWsw,1276
262
262
  model_compression_toolkit/gptq/runner.py,sha256=vWd7cWKgTGc9oPcTtwTQZoI3MArCx19Y61uteLFCxVo,5534
@@ -269,7 +269,7 @@ model_compression_toolkit/gptq/common/gptq_training.py,sha256=U24sNWiVzXEfnk4ePO
269
269
  model_compression_toolkit/gptq/keras/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
270
270
  model_compression_toolkit/gptq/keras/gptq_keras_implementation.py,sha256=axBwnCSjq5xk-xGymOwSOqjp39It-CVtGcCTRTf0E_4,1248
271
271
  model_compression_toolkit/gptq/keras/gptq_loss.py,sha256=rbRkF15MYd6nq4G49kcjb_dPTa-XNq9cTkrb93mXawo,6241
272
- model_compression_toolkit/gptq/keras/gptq_training.py,sha256=49HM4zj5BMlTzEtFGLdEqk0upvuKTYlvCMx9okzNyNk,17319
272
+ model_compression_toolkit/gptq/keras/gptq_training.py,sha256=gliTu3hoL3bOMytgeaUfbcJ0bz7-bih-Lm3CkMvQiOM,17307
273
273
  model_compression_toolkit/gptq/keras/graph_info.py,sha256=B9wMdlnUNHaFog6UsE3bEZrcB6j1ySNYaU4o_kI91H0,4564
274
274
  model_compression_toolkit/gptq/keras/quantization_facade.py,sha256=siVgRlNhWwmiA-9FN7MIs3XSEp0NjgCPnXvBkFu5GLQ,14835
275
275
  model_compression_toolkit/gptq/keras/quantizer/__init__.py,sha256=-DK1CDXvlsnEbki4lukZLpl6Xrbo91_jcqxXlG5Eg6Q,963
@@ -328,8 +328,8 @@ model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py,sh
328
328
  model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py,sha256=GOYRDXvQSGe_iUFVmvDy5BqC952hu_-rQO06n8QCyw0,5491
329
329
  model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py,sha256=5XswoF-5aaFangkHssWKAQTsk6lf_zzndzfCsBWBVMs,5004
330
330
  model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py,sha256=Rf1RcYmelmdZmBV5qOKvKWF575ofc06JFQSq83Jz99A,696
331
- model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py,sha256=OeVcB9w5kIvP-KJiI-cBJNnLt-rUCEqEeVXJU5GInkQ,9621
332
- model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py,sha256=bA2XfqGD3TPz_5XhaKU0dzxfNI_v0c8_0UywJGjKumM,8643
331
+ model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py,sha256=4xmLmg7yN2A7iKnifwkWddgJTWMUiIjFilIuorJeK1A,9657
332
+ model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py,sha256=0zFu84d49PF5GtgFbgu1ISxhqOqBG0_U9CdOhBiKnBk,8712
333
333
  model_compression_toolkit/target_platform_capabilities/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
334
334
  model_compression_toolkit/target_platform_capabilities/constants.py,sha256=mYUESjXeN7EPomZKgqHZE031KNOO4wmFdRB8gA4m50U,920
335
335
  model_compression_toolkit/target_platform_capabilities/immutable.py,sha256=rSPd3Xpx4Rzt6-EwDA9tXvKygrrt4xvmq01JVCXY0hQ,1723
@@ -355,56 +355,56 @@ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/ta
355
355
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/latest/__init__.py,sha256=4Yr2tWrFAVDh_41o5TF0VUusMMyg0FIFaPWpW1tLQ5w,1514
356
356
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v1/__init__.py,sha256=t4JKsPcor-7KSCKzIwuaBv0NLNwfhuewAQGlDl6iBeo,717
357
357
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v1/tp_model.py,sha256=MpZ2j3YyAQqQbyAHHNG8Mgn2sHKTRvVoBPQHMIiyG70,6310
358
- model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v1/tpc_keras.py,sha256=lEARkzeJxgUemSqssJ1KJeAuOmzJMfwrEJQqMZ9P_Ts,3845
358
+ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v1/tpc_keras.py,sha256=KHj1i_TwQkhDzUEbUm0HZxqQLCl57H6CsH8zWu02jJo,3830
359
359
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v1/tpc_pytorch.py,sha256=-_hZ1eHcDW2emKcCwkWkuYjqYaOZUmz5sSlIBOI83YA,3261
360
360
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v2/__init__.py,sha256=GyJf-kpSYJDM9lmnxf4JFrMvRj4K8K-4te5r9qHCus8,717
361
361
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v2/tp_model.py,sha256=E9h5L5wmHgzLPrFBCf8eXUtZAIQ_3zLMijQL6l7jKsE,6846
362
- model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v2/tpc_keras.py,sha256=FgXhVU9ZH00WLphJn5bneSjKVkauBdPmOI3DaO7s-d0,4321
362
+ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v2/tpc_keras.py,sha256=mq_KeCLBO0n0JfzA7LK8VPEngX5-FdK_NHmLZJIGD-w,4306
363
363
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v2/tpc_pytorch.py,sha256=ZV73uahc1wksuQWk5G5PmN3dgeELFXPNPDur8l14bJU,3859
364
364
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3/__init__.py,sha256=e9S6b6dxUdRX96B3ZLVkYEaxjFEWb-ml6v-14g_xbhg,717
365
365
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3/tp_model.py,sha256=hUtEUeq4hWMWGAA_I_oO1HhOs2CwWSLi3IqUGkutrR4,8148
366
- model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3/tpc_keras.py,sha256=XLr2wpUGH5B9CKfvhA-IaxEpB6PZzg5ZHMcXxr0668I,4618
366
+ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3/tpc_keras.py,sha256=iLSTsQs0v8KLW-AcSfwXVxKLY4vdrwawTtuBS17S-Wg,4603
367
367
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3/tpc_pytorch.py,sha256=R2GGyFFiR9qg9ycakJ3cZPpSDLcEtgpU91tARwWv7oc,4196
368
368
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3_lut/__init__.py,sha256=l8UGahYXmyI7UNH6VM0Q0Bzp0ncXIDRx-zNyyFEH1tc,721
369
369
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3_lut/tp_model.py,sha256=zkBRVigTdd25_0TpuvzQbZpKBH5PZa-h4MRUc19zE5A,8332
370
- model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3_lut/tpc_keras.py,sha256=HFJCal2BMsdVHUN_1686Ke8FQFSyuYodWriCXhogBIg,4631
370
+ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3_lut/tpc_keras.py,sha256=hAPEhWVk0oebcttbF_8-VyVens_8TjCtiazTguj4_sc,4616
371
371
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v3_lut/tpc_pytorch.py,sha256=VtL9tQGsVy8oQwc3wM8a6r6lnvHVdk3E9gSmgmJobJU,4209
372
372
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4/__init__.py,sha256=5r1xy_YVlr9WJVola7SuvU2pt7B5KYi20Jz78M5uTPw,717
373
373
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4/tp_model.py,sha256=hUtEUeq4hWMWGAA_I_oO1HhOs2CwWSLi3IqUGkutrR4,8148
374
- model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4/tpc_keras.py,sha256=dZylTAVVQDf2DioiWIFiVmQwMfAQHmK7DXm_IM8Jjf4,5372
374
+ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4/tpc_keras.py,sha256=D-F6B50UDb5u3DxtcBSBTjvwlyzTwOYSBTzNwz11JkY,5367
375
375
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4/tpc_pytorch.py,sha256=mXu9X0Z5qotW12B4tTzFeuLHWUm8n9aCUEQA2CmdNy4,4714
376
376
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4_lut/__init__.py,sha256=G3K-LUGYaII8WGxZOXgyhT5ISpLMy-sV08Xn16PRcOw,721
377
377
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4_lut/tp_model.py,sha256=zkBRVigTdd25_0TpuvzQbZpKBH5PZa-h4MRUc19zE5A,8332
378
- model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4_lut/tpc_keras.py,sha256=OxJrh4qVLT-9ApSgQkC7WoP_0CXaJPYMTlkQ4e4R5eI,5541
378
+ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4_lut/tpc_keras.py,sha256=fLZC9GEyqMWQnZTLJzJe56Ujt3kr62L8zs7ygk50wPw,5536
379
379
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v4_lut/tpc_pytorch.py,sha256=JifukO5o082ldp8tbOu3QJU4EnOyfW-LTjFuzY-VYJ0,4727
380
380
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v5/__init__.py,sha256=tafo2--3T8rFuwRr9nXlXGBfGTg7fCX7sGjh3hD5YXQ,717
381
381
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v5/tp_model.py,sha256=97CxWMRfb-Xutkl95V3Jy0DbEJomQ7vGfv8afunG26A,8145
382
- model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v5/tpc_keras.py,sha256=sLaLaGjdVT7HgU-5eQbs9ABA4i1vnR7yGAFStgo6r-E,5437
382
+ model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v5/tpc_keras.py,sha256=cd__C4W4fKF7SJ9O43HFvQxbLG7z39hl9GNg3HjjY0w,5432
383
383
  model_compression_toolkit/target_platform_capabilities/tpc_models/default_tpc/v5/tpc_pytorch.py,sha256=676izRmvryL9ZbO60yWf0YmK58A988mr7YCIQWc6emQ,4714
384
384
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py,sha256=lNJ29DYxaLUPDstRDA1PGI5r9Fulq_hvrZMlhst1Z5g,697
385
385
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py,sha256=MvLXPoTaYacBFU0oNjdLq0bRT66rAKEN5MWrB6oDIyE,2295
386
386
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py,sha256=F5RG4MnuAwKcNXbfVbPFLQu30-lNax-7knqu20B6udQ,1522
387
387
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py,sha256=1mMOREEMoNHu_KTMGDp4crN61opKWX6aFn1DrDLvqcc,717
388
388
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py,sha256=PhGlCGLcDN9m8yiPeNNxpUC9TiC95qWHx7WIlxcwXoA,8140
389
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py,sha256=MqbFJxLYsiuDYyHAS-6H6s7L7_eN45mDyOlvCmhBpDU,5443
389
+ model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py,sha256=lDV2Wp_3w8mjHkEWRpA0l0zgr4I43PddLYbZ6NGvNoE,5439
390
390
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py,sha256=4liNmjx5lKxlkekqRlkJ0CPUMlsFcuktLxkIBB8lrI0,4721
391
391
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py,sha256=vFDyiMymNZSRCdTgAyWn4A-tZD3vzze_PTLBSF2OYe8,721
392
392
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py,sha256=81pYnxAU9di5AXzW1TTfP7rS0IJWd9hjrI2VRQzuEa0,8443
393
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py,sha256=fu2pnmuSD2U_GQwiETLQpMYvs332uks14gCAdJCS-eM,5451
393
+ model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py,sha256=R9-utIQFQ5K89o7r7JSYlYvpibl9ZTN-uz6CWsfKvzE,5446
394
394
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py,sha256=CsRgw4_QapBQ7Y1_QQ-kI_RewooBwqyRsMrmlB_k-kc,4729
395
395
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
396
396
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py,sha256=lnhJcwvTF0t7ybeiTleIS1p0aD8xzFZxVPx4ISk5uWQ,2090
397
397
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py,sha256=UUvUCcTots_sehdRnDfgkaE8WPQ7dPbeuhDF4Qy2nzw,1510
398
398
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py,sha256=t4JKsPcor-7KSCKzIwuaBv0NLNwfhuewAQGlDl6iBeo,717
399
399
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py,sha256=XOl5GO_BIDVhZFn4TX6v429Spq-JKUnEgCHzF8kY9TM,6204
400
- model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py,sha256=0Wsk6qyok8S0UBf7Io011D3pp3bRqJvjv74JdF2tKRw,3198
400
+ model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py,sha256=rIhqfc_Ks1SKzk5ppfomP88fGhx3Oh2w498dSW3p-ZY,3183
401
401
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py,sha256=o5w_ylMr7KCJCbSP1jx8Qs8HFysEEg4e_aRM_LXlexM,2942
402
402
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
403
403
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py,sha256=C42RJBQERjjkqFa1pRsHZXseofceOtrp_fJxs4wqWvo,2085
404
404
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py,sha256=sK9PnyB2R9g0rqHr_9vyUFX7wSyrZe7x9yqYUlbaiqo,1505
405
405
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py,sha256=t4JKsPcor-7KSCKzIwuaBv0NLNwfhuewAQGlDl6iBeo,717
406
406
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py,sha256=u8KAytDvkXAbgqpVEKynSqag3Wrc7TAtCP9Ru9Y0hR8,8048
407
- model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py,sha256=bce4YrSBmFk2NNVmL4_GysGn_Ejhgk4yHRXOAKZKv_I,5925
407
+ model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py,sha256=KeRMMdcqWvZ2MACbYe2Lg_M_RJ-VZkKWHni-GcDZBNs,5920
408
408
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py,sha256=KH_kdxyX9pPeLqkIj9_E59ZhAIFZ8bll0sfwDuILVdU,5068
409
409
  model_compression_toolkit/trainable_infrastructure/__init__.py,sha256=O0J24JDzwdo-p9yf1oVtDnK1ZoZ1K8iPAp7WJ40bcTQ,1104
410
410
  model_compression_toolkit/trainable_infrastructure/common/__init__.py,sha256=huHoBUcKNB6BnY6YaUCcFvdyBtBI172ZoUD8ZYeNc6o,696
@@ -416,13 +416,13 @@ model_compression_toolkit/trainable_infrastructure/common/quant_utils.py,sha256=
416
416
  model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py,sha256=My5Wz34jPOyh8z33OTpKnOobRB0cpO_Qgmtsd5lizHo,4791
417
417
  model_compression_toolkit/trainable_infrastructure/keras/__init__.py,sha256=huHoBUcKNB6BnY6YaUCcFvdyBtBI172ZoUD8ZYeNc6o,696
418
418
  model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py,sha256=UJRsEBp32qVU34ICKPfn9Ow4OjLQn33GjKA_3C-9Y7M,4178
419
- model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py,sha256=PpyM0u8fsvv5xw5Gmt-3Z1UFATX5KLJzLbsXaquuyuk,3991
419
+ model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py,sha256=txdWXdZoHazg-3MDPb9P-oXRM92LRn2G_8woEplwKaI,4360
420
420
  model_compression_toolkit/trainable_infrastructure/keras/load_model.py,sha256=DwpVuJsTf-Sp3B-7vYuhQdFXPtVopNGRcanL-WXzEzw,3446
421
421
  model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py,sha256=MVwXNymmFRB2NXIBx4e2mdJ1RfoHxRPYRgjb1MQP5kY,1797
422
422
  model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py,sha256=huHoBUcKNB6BnY6YaUCcFvdyBtBI172ZoUD8ZYeNc6o,696
423
423
  model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py,sha256=SbvRlIdE32PEBsINt1bhSqvrKL_zbM9V-aeSkOn-sw4,3083
424
- mct_nightly-1.9.0.20230814.post352.dist-info/LICENSE.md,sha256=aYSSIb-5AFPeITTvXm1UAoe0uYBiMmSS8flvXaaFUks,10174
425
- mct_nightly-1.9.0.20230814.post352.dist-info/METADATA,sha256=NqhVoJcRgeb3DDNnTzIr4lTEk7fqgP4uMShzIt9b2dg,10750
426
- mct_nightly-1.9.0.20230814.post352.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
427
- mct_nightly-1.9.0.20230814.post352.dist-info/top_level.txt,sha256=gsYA8juk0Z-ZmQRKULkb3JLGdOdz8jW_cMRjisn9ga4,26
428
- mct_nightly-1.9.0.20230814.post352.dist-info/RECORD,,
424
+ mct_nightly-1.9.0.20230816.post359.dist-info/LICENSE.md,sha256=aYSSIb-5AFPeITTvXm1UAoe0uYBiMmSS8flvXaaFUks,10174
425
+ mct_nightly-1.9.0.20230816.post359.dist-info/METADATA,sha256=_Cg3_JlV6RcNQaK_2acApauZ64GM0-E-2KbsPBhZjTg,10750
426
+ mct_nightly-1.9.0.20230816.post359.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
427
+ mct_nightly-1.9.0.20230816.post359.dist-info/top_level.txt,sha256=gsYA8juk0Z-ZmQRKULkb3JLGdOdz8jW_cMRjisn9ga4,26
428
+ mct_nightly-1.9.0.20230816.post359.dist-info/RECORD,,
@@ -20,12 +20,10 @@ from packaging import version
20
20
  from model_compression_toolkit.core.common.back2framework.base_model_builder import BaseModelBuilder
21
21
  from model_compression_toolkit.core.common.user_info import UserInformation
22
22
 
23
- # As from Tensorflow 2.6, keras is a separate package and some classes should be imported differently.
24
- if version.parse(tf.__version__) < version.parse("2.6"):
25
- from tensorflow.keras.layers import Input
26
- from tensorflow.python.keras.layers.core import TFOpLambda
27
- from tensorflow.python.keras.engine.base_layer import TensorFlowOpLayer
28
- from tensorflow.python.keras.layers import Layer
23
+ if version.parse(tf.__version__) >= version.parse("2.13"):
24
+ from keras import Input
25
+ from keras.src.layers.core import TFOpLambda
26
+ from keras.src.engine.base_layer import TensorFlowOpLayer, Layer
29
27
  else:
30
28
  from keras import Input
31
29
  from keras.layers.core import TFOpLambda
@@ -14,7 +14,13 @@
14
14
  # ==============================================================================
15
15
  from typing import Tuple, Any, Dict, Union, List
16
16
 
17
- from keras.engine.base_layer import Layer
17
+ from packaging import version
18
+ import tensorflow as tf
19
+ if version.parse(tf.__version__) >= version.parse("2.13"):
20
+ from keras.src.engine.base_layer import Layer
21
+ else:
22
+ from keras.engine.base_layer import Layer
23
+
18
24
  from keras.models import Model
19
25
  from mct_quantizers import KerasQuantizationWrapper, KerasActivationQuantizationHolder, QuantizationTarget
20
26
  from mct_quantizers.common.get_quantizers import get_inferable_quantizer_class
@@ -19,10 +19,10 @@ from packaging import version
19
19
  # As from Tensorflow 2.6, keras is a separate package and some classes should be imported differently.
20
20
  from tqdm import tqdm
21
21
 
22
- if version.parse(tf.__version__) < version.parse("2.6"):
23
- from tensorflow.python.keras.layers import Layer # pragma: no cover
22
+ if version.parse(tf.__version__) >= version.parse("2.13"):
23
+ from keras.src.engine.base_layer import Layer
24
24
  else:
25
- from keras.engine.base_layer import Layer
25
+ from tensorflow.python.keras.engine.base_layer import Layer
26
26
 
27
27
  from typing import Any, Dict, List, Tuple
28
28
  from tensorflow.python.util.object_identity import Reference as TFReference
@@ -19,8 +19,8 @@ import tensorflow as tf
19
19
  from model_compression_toolkit.core.keras.quantizer.lut_fake_quant import activation_lut_kmean_quantizer
20
20
  from packaging import version
21
21
 
22
- if version.parse(tf.__version__) < version.parse("2.6"):
23
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Conv2DTranspose, Softmax, ELU
22
+ if version.parse(tf.__version__) >= version.parse("2.13"):
23
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Conv2DTranspose, Softmax, ELU
24
24
  else:
25
25
  from keras.layers import Conv2D, DepthwiseConv2D, Dense, Conv2DTranspose, Softmax, ELU
26
26
 
@@ -16,9 +16,9 @@ import numpy as np
16
16
  import tensorflow as tf
17
17
  from packaging import version
18
18
 
19
- if version.parse(tf.__version__) < version.parse("2.6"):
20
- from tensorflow.python.keras.layers.core import TFOpLambda
21
- from tensorflow.keras.layers import MultiHeadAttention, Conv2D, Softmax, Concatenate, Reshape, Permute
19
+ if version.parse(tf.__version__) >= version.parse("2.13"):
20
+ from keras.src.layers.core import TFOpLambda
21
+ from keras.src.layers import MultiHeadAttention, Conv2D, Softmax, Concatenate, Reshape, Permute
22
22
  else:
23
23
  from keras.layers.core import TFOpLambda
24
24
  from keras.layers import MultiHeadAttention, Conv2D, Softmax, Concatenate, Reshape, Permute
@@ -16,11 +16,16 @@
16
16
  from typing import Tuple, Any
17
17
 
18
18
  import numpy as np
19
- import tensorflow as tf
20
19
 
20
+ from packaging import version
21
+ import tensorflow as tf
21
22
  from tensorflow.python.keras.layers.core import TFOpLambda
22
- from tensorflow.keras.layers import Activation, Conv2D, Dense, DepthwiseConv2D, ZeroPadding2D, Reshape, \
23
- GlobalAveragePooling2D, Dropout, ReLU, PReLU, ELU
23
+ if version.parse(tf.__version__) >= version.parse("2.13"):
24
+ from keras.src.layers import Activation, Conv2D, Dense, DepthwiseConv2D, ZeroPadding2D, Reshape, \
25
+ GlobalAveragePooling2D, Dropout, ReLU, PReLU, ELU
26
+ else:
27
+ from tensorflow.keras.layers import Activation, Conv2D, Dense, DepthwiseConv2D, ZeroPadding2D, Reshape, \
28
+ GlobalAveragePooling2D, Dropout, ReLU, PReLU, ELU
24
29
 
25
30
  from model_compression_toolkit.core import CoreConfig, FrameworkInfo
26
31
  from model_compression_toolkit.core.common import BaseNode, Graph
@@ -41,9 +41,10 @@ from model_compression_toolkit.core.keras.statistics_correction.apply_second_mom
41
41
  keras_apply_second_moment_correction
42
42
  from packaging import version
43
43
 
44
- if version.parse(tf.__version__) < version.parse("2.6"):
45
- from tensorflow.keras.layers import Dense, Activation, Conv2D, DepthwiseConv2D, Conv2DTranspose, Concatenate, Add
46
- from tensorflow.python.keras.layers.core import TFOpLambda
44
+ if version.parse(tf.__version__) >= version.parse("2.13"):
45
+ from keras.src.layers import Dense, Activation, Conv2D, DepthwiseConv2D, Conv2DTranspose, \
46
+ Concatenate, Add
47
+ from keras.src.layers.core import TFOpLambda
47
48
  else:
48
49
  from keras.layers import Dense, Activation, Conv2D, DepthwiseConv2D, Conv2DTranspose, \
49
50
  Concatenate, Add
@@ -3,8 +3,8 @@ import numpy as np
3
3
  import tensorflow as tf
4
4
  from packaging import version
5
5
 
6
- if version.parse(tf.__version__) < version.parse("2.6"):
7
- from tensorflow.keras.layers import Activation, ReLU, BatchNormalization
6
+ if version.parse(tf.__version__) >= version.parse("2.13"):
7
+ from keras.src.layers import Activation, ReLU, BatchNormalization
8
8
  else:
9
9
  from keras.layers import Activation, ReLU, BatchNormalization
10
10
 
@@ -17,12 +17,12 @@
17
17
  import tensorflow as tf
18
18
  from packaging import version
19
19
 
20
- # As from Tensorflow 2.6, keras is a separate package and some classes should be imported differently.
21
- if version.parse(tf.__version__) < version.parse("2.6"):
22
- from tensorflow.python.keras.engine.node import Node as KerasNode
23
- from tensorflow.keras.layers import InputLayer
24
- from tensorflow.python.keras.engine.functional import Functional
25
- from tensorflow.python.keras.engine.sequential import Sequential
20
+
21
+ if version.parse(tf.__version__) >= version.parse("2.13"):
22
+ from keras.src.engine.input_layer import InputLayer
23
+ from keras.src.engine.node import Node as KerasNode
24
+ from keras.src.engine.functional import Functional
25
+ from keras.src.engine.sequential import Sequential
26
26
  else:
27
27
  from keras.engine.input_layer import InputLayer
28
28
  from keras.engine.node import Node as KerasNode
@@ -17,9 +17,8 @@
17
17
  import tensorflow as tf
18
18
  from packaging import version
19
19
 
20
- # As from Tensorflow 2.6, keras is a separate package and some classes should be imported differently.
21
- if version.parse(tf.__version__) < version.parse("2.6"):
22
- from tensorflow.python.keras.engine.node import Node as KerasNode
20
+ if version.parse(tf.__version__) >= version.parse("2.13"):
21
+ from keras.src.engine.node import Node as KerasNode
23
22
  else:
24
23
  from keras.engine.node import Node as KerasNode
25
24
 
@@ -20,10 +20,10 @@ from packaging import version
20
20
  from model_compression_toolkit.core.keras.custom_layer_validation import is_keras_custom_layer
21
21
  from model_compression_toolkit.logger import Logger
22
22
 
23
- if version.parse(tf.__version__) < version.parse("2.6"):
24
- from tensorflow.python.keras.layers.core import TFOpLambda, SlicingOpLambda
25
- from tensorflow.python.keras.engine.keras_tensor import KerasTensor
26
- from tensorflow.python.keras.engine.node import Node as KerasNode
23
+ if version.parse(tf.__version__) >= version.parse("2.13"):
24
+ from keras.src.layers.core import TFOpLambda, SlicingOpLambda
25
+ from keras.src.engine.keras_tensor import KerasTensor
26
+ from keras.src.engine.node import Node as KerasNode
27
27
  else:
28
28
  from keras.layers.core import TFOpLambda, SlicingOpLambda
29
29
  from keras.engine.keras_tensor import KerasTensor
@@ -18,7 +18,11 @@ from typing import Dict, Callable
18
18
 
19
19
  import keras.models
20
20
  import tensorflow as tf
21
- from keras.engine.base_layer import Layer
21
+ from packaging import version
22
+ if version.parse(tf.__version__) >= version.parse("2.13"):
23
+ from keras.src.engine.base_layer import Layer
24
+ else:
25
+ from keras.engine.base_layer import Layer
22
26
 
23
27
  from mct_quantizers import KerasQuantizationWrapper
24
28
  from mct_quantizers.logger import Logger
@@ -27,8 +31,8 @@ layers = keras.layers
27
31
 
28
32
  from model_compression_toolkit.exporter.model_exporter.keras.base_keras_exporter import BaseKerasExporter
29
33
 
30
- from keras.engine import base_layer_utils
31
- from keras import backend
34
+ from tensorflow.python.keras.engine import base_layer_utils
35
+ from tensorflow.python.keras import backend
32
36
 
33
37
 
34
38
  class FakelyQuantKerasExporter(BaseKerasExporter):
@@ -19,8 +19,15 @@ from model_compression_toolkit.constants import FOUND_TF
19
19
  from model_compression_toolkit.logger import Logger
20
20
 
21
21
  if FOUND_TF:
22
- from keras.engine.base_layer import Layer
23
- from keras.engine.input_layer import InputLayer
22
+ from packaging import version
23
+ import tensorflow as tf
24
+ if version.parse(tf.__version__) >= version.parse("2.13"):
25
+ from keras.src.engine.base_layer import Layer
26
+ from keras.src.engine.input_layer import InputLayer
27
+ else:
28
+ from keras.engine.base_layer import Layer
29
+ from keras.engine.input_layer import InputLayer
30
+
24
31
  from mct_quantizers import KerasQuantizationWrapper
25
32
 
26
33
  def is_keras_layer_exportable(layer: Any) -> bool:
@@ -51,15 +51,15 @@ def get_weights_inferable_quantizer_kwargs(node_qc: NodeWeightsQuantizationConfi
51
51
  if quantization_method in [QuantizationMethod.POWER_OF_TWO,
52
52
  QuantizationMethod.SYMMETRIC]:
53
53
  return {qi_inferable_quantizers_constants.NUM_BITS: node_qc.weights_n_bits,
54
- qi_inferable_quantizers_constants.THRESHOLD: node_qc.weights_quantization_params[THRESHOLD].flatten(),
54
+ qi_inferable_quantizers_constants.THRESHOLD: node_qc.weights_quantization_params[THRESHOLD].flatten().tolist(),
55
55
  qi_inferable_quantizers_constants.PER_CHANNEL: node_qc.weights_per_channel_threshold,
56
56
  qi_inferable_quantizers_constants.CHANNEL_AXIS: node_qc.weights_channels_axis}
57
57
 
58
58
  elif quantization_method in [QuantizationMethod.UNIFORM]:
59
59
  return {qi_inferable_quantizers_constants.NUM_BITS: node_qc.weights_n_bits,
60
60
  qi_inferable_quantizers_constants.PER_CHANNEL: node_qc.weights_per_channel_threshold,
61
- qi_inferable_quantizers_constants.MIN_RANGE: node_qc.weights_quantization_params[RANGE_MIN].flatten(),
62
- qi_inferable_quantizers_constants.MAX_RANGE: node_qc.weights_quantization_params[RANGE_MAX].flatten(),
61
+ qi_inferable_quantizers_constants.MIN_RANGE: node_qc.weights_quantization_params[RANGE_MIN].flatten().tolist(),
62
+ qi_inferable_quantizers_constants.MAX_RANGE: node_qc.weights_quantization_params[RANGE_MAX].flatten().tolist(),
63
63
  qi_inferable_quantizers_constants.CHANNEL_AXIS: node_qc.weights_channels_axis}
64
64
 
65
65
  elif quantization_method in [QuantizationMethod.LUT_POT_QUANTIZER, QuantizationMethod.LUT_SYM_QUANTIZER]:
@@ -96,13 +96,13 @@ def get_activation_inferable_quantizer_kwargs(node_qc: NodeActivationQuantizatio
96
96
  if quantization_method in [QuantizationMethod.POWER_OF_TWO,
97
97
  QuantizationMethod.SYMMETRIC]:
98
98
  return {qi_inferable_quantizers_constants.NUM_BITS: node_qc.activation_n_bits,
99
- qi_inferable_quantizers_constants.THRESHOLD: np.asarray([node_qc.activation_quantization_params[THRESHOLD]]),
99
+ qi_inferable_quantizers_constants.THRESHOLD: [node_qc.activation_quantization_params[THRESHOLD]],
100
100
  qi_inferable_quantizers_constants.SIGNED: node_qc.activation_quantization_params.get(SIGNED)}
101
101
 
102
102
  elif quantization_method in [QuantizationMethod.UNIFORM]:
103
103
  return {qi_inferable_quantizers_constants.NUM_BITS: node_qc.activation_n_bits,
104
- qi_inferable_quantizers_constants.MIN_RANGE: np.asarray([node_qc.activation_quantization_params[RANGE_MIN]]),
105
- qi_inferable_quantizers_constants.MAX_RANGE: np.asarray([node_qc.activation_quantization_params[RANGE_MAX]])}
104
+ qi_inferable_quantizers_constants.MIN_RANGE: [node_qc.activation_quantization_params[RANGE_MIN]],
105
+ qi_inferable_quantizers_constants.MAX_RANGE: [node_qc.activation_quantization_params[RANGE_MAX]]}
106
106
 
107
107
  elif quantization_method in [QuantizationMethod.LUT_POT_QUANTIZER]:
108
108
  return {qi_inferable_quantizers_constants.NUM_BITS: node_qc.activation_n_bits,
@@ -28,8 +28,8 @@ from model_compression_toolkit.gptq.keras.quantizer.quantization_builder import
28
28
  from model_compression_toolkit.logger import Logger
29
29
  from mct_quantizers import KerasQuantizationWrapper, KerasActivationQuantizationHolder
30
30
 
31
- if version.parse(tf.__version__) < version.parse("2.6"):
32
- from tensorflow.python.keras.engine.base_layer import TensorFlowOpLayer
31
+ if version.parse(tf.__version__) >= version.parse("2.13"):
32
+ from keras.src.engine.base_layer import TensorFlowOpLayer
33
33
  else:
34
34
  from keras.engine.base_layer import TensorFlowOpLayer
35
35
 
@@ -119,12 +119,12 @@ class STEWeightQATQuantizer(BasePytorchQATTrainableQuantizer):
119
119
  if self.power_of_two:
120
120
  pot_threshold = 2 ** np.ceil(np.log2(np_threshold))
121
121
  return WeightsPOTInferableQuantizer(num_bits=self.num_bits,
122
- threshold=pot_threshold,
122
+ threshold=pot_threshold.tolist(),
123
123
  per_channel=self.quantization_config.weights_per_channel_threshold,
124
124
  channel_axis=self.quantization_config.weights_channels_axis)
125
125
  else:
126
126
  return WeightsSymmetricInferableQuantizer(num_bits=self.num_bits,
127
- threshold=np_threshold,
127
+ threshold=np_threshold.tolist(),
128
128
  per_channel=self.quantization_config.weights_per_channel_threshold,
129
129
  channel_axis=self.quantization_config.weights_channels_axis)
130
130
 
@@ -198,9 +198,9 @@ class STEActivationQATQuantizer(BasePytorchQATTrainableQuantizer):
198
198
  if self.power_of_two:
199
199
  pot_threshold = np.power(2.0, np.ceil(np.log2(np_threshold)))
200
200
  return ActivationPOTInferableQuantizer(num_bits=self.num_bits,
201
- threshold=pot_threshold,
201
+ threshold=pot_threshold.tolist(),
202
202
  signed=self.sign)
203
203
  else:
204
204
  return ActivationSymmetricInferableQuantizer(num_bits=self.num_bits,
205
- threshold=np_threshold,
205
+ threshold=np_threshold.tolist(),
206
206
  signed=self.sign)
@@ -190,4 +190,5 @@ class STEUniformActivationQATQuantizer(BasePytorchQATTrainableQuantizer):
190
190
  _max = self.get_quantizer_variable(FQ_MAX).cpu().detach().numpy()
191
191
 
192
192
  return ActivationUniformInferableQuantizer(num_bits=self.num_bits,
193
- min_range=_min, max_range=_max)
193
+ min_range=_min.tolist(),
194
+ max_range=_max.tolist())
@@ -15,9 +15,8 @@
15
15
  import tensorflow as tf
16
16
  from packaging import version
17
17
 
18
- if version.parse(tf.__version__) < version.parse("2.6"):
19
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Reshape, ZeroPadding2D, \
20
- Dropout, \
18
+ if version.parse(tf.__version__) >= version.parse("2.13"):
19
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Reshape, ZeroPadding2D, Dropout, \
21
20
  MaxPooling2D, Activation, ReLU, Flatten, Cropping2D
22
21
  else:
23
22
  from keras.layers import Conv2D, DepthwiseConv2D, Reshape, ZeroPadding2D, \
@@ -16,10 +16,9 @@ import tensorflow as tf
16
16
 
17
17
  from packaging import version
18
18
 
19
- if version.parse(tf.__version__) < version.parse("2.6"):
20
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
21
- Dropout, \
22
- MaxPooling2D, Activation, ReLU, PReLU, Flatten, Cropping2D
19
+ if version.parse(tf.__version__) >= version.parse("2.13"):
20
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
21
+ Dropout, MaxPooling2D, Activation, ReLU, PReLU, Flatten, Cropping2D
23
22
  else:
24
23
  from keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
25
24
  Dropout, MaxPooling2D, Activation, ReLU, PReLU, Flatten, Cropping2D
@@ -15,10 +15,9 @@
15
15
  import tensorflow as tf
16
16
  from packaging import version
17
17
 
18
- if version.parse(tf.__version__) < version.parse("2.6"):
19
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
20
- Dropout, \
21
- MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D
18
+ if version.parse(tf.__version__) >= version.parse("2.13"):
19
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
20
+ Dropout, MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D
22
21
  else:
23
22
  from keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
24
23
  Dropout, MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D
@@ -16,10 +16,9 @@ import tensorflow as tf
16
16
  from packaging import version
17
17
  from model_compression_toolkit.target_platform_capabilities.tpc_models.default_tpc.v3_lut import __version__ as TPC_VERSION
18
18
 
19
- if version.parse(tf.__version__) < version.parse("2.6"):
20
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
21
- Dropout, \
22
- MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D
19
+ if version.parse(tf.__version__) >= version.parse("2.13"):
20
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
21
+ Dropout, MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D
23
22
  else:
24
23
  from keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, \
25
24
  Dropout, MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D
@@ -15,8 +15,8 @@
15
15
  import tensorflow as tf
16
16
  from packaging import version
17
17
 
18
- if version.parse(tf.__version__) < version.parse("2.6"):
19
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
18
+ if version.parse(tf.__version__) >= version.parse("2.13"):
19
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
20
20
  MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D, LeakyReLU, Permute, \
21
21
  Conv2DTranspose
22
22
  else:
@@ -16,8 +16,8 @@ import tensorflow as tf
16
16
  from packaging import version
17
17
  from model_compression_toolkit.target_platform_capabilities.tpc_models.default_tpc.v4_lut import __version__ as TPC_VERSION
18
18
 
19
- if version.parse(tf.__version__) < version.parse("2.6"):
20
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
19
+ if version.parse(tf.__version__) >= version.parse("2.13"):
20
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
21
21
  MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D, LeakyReLU, Permute, \
22
22
  Conv2DTranspose
23
23
  else:
@@ -15,8 +15,8 @@
15
15
  import tensorflow as tf
16
16
  from packaging import version
17
17
 
18
- if version.parse(tf.__version__) < version.parse("2.6"):
19
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
18
+ if version.parse(tf.__version__) >= version.parse("2.13"):
19
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
20
20
  MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D, LeakyReLU, Permute, \
21
21
  Conv2DTranspose
22
22
  else:
@@ -15,8 +15,9 @@
15
15
  import tensorflow as tf
16
16
  from packaging import version
17
17
 
18
- if version.parse(tf.__version__) < version.parse("2.6"):
19
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
18
+
19
+ if version.parse(tf.__version__) >= version.parse("2.13"):
20
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
20
21
  MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D, LeakyReLU, Permute, \
21
22
  Conv2DTranspose
22
23
  else:
@@ -15,8 +15,8 @@
15
15
  import tensorflow as tf
16
16
  from packaging import version
17
17
 
18
- if version.parse(tf.__version__) < version.parse("2.6"):
19
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
18
+ if version.parse(tf.__version__) >= version.parse("2.13"):
19
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Dense, Reshape, ZeroPadding2D, Dropout, \
20
20
  MaxPooling2D, Activation, ReLU, Add, Subtract, Multiply, PReLU, Flatten, Cropping2D, LeakyReLU, Permute, \
21
21
  Conv2DTranspose
22
22
  else:
@@ -17,9 +17,8 @@ import tensorflow as tf
17
17
  from packaging import version
18
18
  from model_compression_toolkit.target_platform_capabilities.tpc_models.qnnpack_tpc.v1 import __version__ as TPC_VERSION
19
19
 
20
- if version.parse(tf.__version__) < version.parse("2.6"):
21
- from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Conv2DTranspose, Dense, BatchNormalization, ReLU, \
22
- Activation
20
+ if version.parse(tf.__version__) >= version.parse("2.13"):
21
+ from keras.src.layers import Conv2D, DepthwiseConv2D, Conv2DTranspose, Dense, BatchNormalization, ReLU, Activation
23
22
  else:
24
23
  from keras.layers import Conv2D, DepthwiseConv2D, Conv2DTranspose, Dense, BatchNormalization, ReLU, Activation
25
24
 
@@ -15,9 +15,9 @@
15
15
  import tensorflow as tf
16
16
  from packaging import version
17
17
 
18
- if version.parse(tf.__version__) < version.parse("2.6"):
19
- from tensorflow.keras.layers import Conv2D, Dense, Reshape, ZeroPadding2D, AveragePooling2D, Activation, \
20
- DepthwiseConv2D, MaxPooling2D, ReLU, Add, Softmax, Concatenate, Multiply, Maximum, Minimum, BatchNormalization
18
+ if version.parse(tf.__version__) >= version.parse("2.13"):
19
+ from keras.src.layers import Conv2D, Dense, Reshape, ZeroPadding2D, AveragePooling2D, Activation, DepthwiseConv2D, \
20
+ MaxPooling2D, ReLU, Add, Softmax, Concatenate, Multiply, Maximum, Minimum, BatchNormalization
21
21
  else:
22
22
  from keras.layers import Conv2D, Dense, Reshape, ZeroPadding2D, AveragePooling2D, Activation, DepthwiseConv2D, \
23
23
  MaxPooling2D, ReLU, Add, Softmax, Concatenate, Multiply, Maximum, Minimum, BatchNormalization
@@ -17,12 +17,17 @@ import copy
17
17
  from typing import Any, Union
18
18
  from enum import Enum
19
19
 
20
+ import numpy as np
21
+
20
22
  from model_compression_toolkit.target_platform_capabilities.target_platform import QuantizationMethod
21
23
  from model_compression_toolkit.trainable_infrastructure.common.trainable_quantizer_config import \
22
24
  TrainableQuantizerActivationConfig, TrainableQuantizerWeightsConfig
23
25
  from mct_quantizers.common import constants as C
24
26
 
25
27
 
28
+ CONFIG = "config"
29
+ VALUE = "value"
30
+
26
31
  def transform_enum(v: Any):
27
32
  """
28
33
  If an enum is received it value is return otherwise the input is returned.
@@ -63,9 +68,13 @@ def config_deserialization(in_config: dict) -> Union[TrainableQuantizerWeightsCo
63
68
  """
64
69
  in_config = copy.deepcopy(in_config)
65
70
  if in_config[C.IS_WEIGHTS]:
71
+ weights_quantization_params = {}
72
+ for key, value in in_config[C.WEIGHTS_QUANTIZATION_PARAMS].items():
73
+ # In TF2.13.0, serialization of numpy array is dictionary with parameters
74
+ weights_quantization_params.update({key: np.array(value[CONFIG][VALUE] if isinstance(value, dict) else value)})
66
75
  return TrainableQuantizerWeightsConfig(weights_quantization_method=QuantizationMethod(in_config[C.WEIGHTS_QUANTIZATION_METHOD]),
67
76
  weights_n_bits=in_config[C.WEIGHTS_N_BITS],
68
- weights_quantization_params=in_config[C.WEIGHTS_QUANTIZATION_PARAMS],
77
+ weights_quantization_params=weights_quantization_params,
69
78
  enable_weights_quantization=in_config[C.ENABLE_WEIGHTS_QUANTIZATION],
70
79
  weights_channels_axis=in_config[C.WEIGHTS_CHANNELS_AXIS],
71
80
  weights_per_channel_threshold=in_config[C.WEIGHTS_PER_CHANNEL_THRESHOLD],