mct-nightly 2.2.0.20250106.546__py3-none-any.whl → 2.2.0.20250107.15510__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 (80) hide show
  1. {mct_nightly-2.2.0.20250106.546.dist-info → mct_nightly-2.2.0.20250107.15510.dist-info}/METADATA +1 -1
  2. {mct_nightly-2.2.0.20250106.546.dist-info → mct_nightly-2.2.0.20250107.15510.dist-info}/RECORD +43 -78
  3. model_compression_toolkit/__init__.py +1 -1
  4. model_compression_toolkit/core/__init__.py +1 -1
  5. model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +1 -1
  6. model_compression_toolkit/core/common/graph/memory_graph/cut.py +5 -2
  7. model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +25 -25
  8. model_compression_toolkit/core/common/quantization/quantization_config.py +19 -1
  9. model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +1 -33
  10. model_compression_toolkit/core/keras/graph_substitutions/substitutions/conv_funcs_to_layer.py +2 -2
  11. model_compression_toolkit/core/keras/resource_utilization_data_facade.py +11 -1
  12. model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/matmul_decomposition.py +499 -0
  13. model_compression_toolkit/core/pytorch/pytorch_implementation.py +3 -0
  14. model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +11 -3
  15. model_compression_toolkit/gptq/keras/quantization_facade.py +10 -1
  16. model_compression_toolkit/gptq/pytorch/quantization_facade.py +10 -1
  17. model_compression_toolkit/pruning/keras/pruning_facade.py +8 -2
  18. model_compression_toolkit/pruning/pytorch/pruning_facade.py +8 -2
  19. model_compression_toolkit/ptq/keras/quantization_facade.py +10 -1
  20. model_compression_toolkit/ptq/pytorch/quantization_facade.py +9 -1
  21. model_compression_toolkit/qat/__init__.py +5 -2
  22. model_compression_toolkit/qat/keras/quantization_facade.py +9 -1
  23. model_compression_toolkit/qat/pytorch/quantization_facade.py +9 -1
  24. model_compression_toolkit/target_platform_capabilities/schema/mct_current_schema.py +1 -1
  25. model_compression_toolkit/target_platform_capabilities/schema/v1.py +63 -55
  26. model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2fw.py +29 -18
  27. model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2keras.py +78 -57
  28. model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2pytorch.py +69 -54
  29. model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +2 -4
  30. model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -10
  31. model_compression_toolkit/target_platform_capabilities/tpc_io_handler.py +93 -0
  32. model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +46 -28
  33. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +6 -5
  34. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +51 -19
  35. model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +8 -4
  36. model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +19 -9
  37. model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +7 -4
  38. model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +46 -32
  39. model_compression_toolkit/xquant/keras/keras_report_utils.py +11 -3
  40. model_compression_toolkit/xquant/pytorch/pytorch_report_utils.py +10 -2
  41. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -98
  42. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -129
  43. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -108
  44. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -16
  45. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +0 -217
  46. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -130
  47. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -109
  48. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -16
  49. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -215
  50. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -130
  51. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -110
  52. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/__init__.py +0 -16
  53. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +0 -222
  54. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py +0 -132
  55. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_pytorch.py +0 -110
  56. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/__init__.py +0 -16
  57. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +0 -219
  58. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py +0 -132
  59. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py +0 -109
  60. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/__init__.py +0 -16
  61. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tp_model.py +0 -246
  62. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_keras.py +0 -135
  63. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_pytorch.py +0 -113
  64. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/__init__.py +0 -16
  65. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tp_model.py +0 -230
  66. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_keras.py +0 -132
  67. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_pytorch.py +0 -110
  68. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/__init__.py +0 -16
  69. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/tp_model.py +0 -332
  70. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/tpc_keras.py +0 -140
  71. model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/tpc_pytorch.py +0 -122
  72. model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -55
  73. model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -89
  74. model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -78
  75. model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -55
  76. model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -118
  77. model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -100
  78. {mct_nightly-2.2.0.20250106.546.dist-info → mct_nightly-2.2.0.20250107.15510.dist-info}/LICENSE.md +0 -0
  79. {mct_nightly-2.2.0.20250106.546.dist-info → mct_nightly-2.2.0.20250107.15510.dist-info}/WHEEL +0 -0
  80. {mct_nightly-2.2.0.20250106.546.dist-info → mct_nightly-2.2.0.20250107.15510.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mct-nightly
3
- Version: 2.2.0.20250106.546
3
+ Version: 2.2.0.20250107.15510
4
4
  Summary: A Model Compression Toolkit for neural networks
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -1,10 +1,10 @@
1
- model_compression_toolkit/__init__.py,sha256=6vue5oisD4VNor4Wm9QDtVtL3LONREVZNNNtMxV2fQw,1573
1
+ model_compression_toolkit/__init__.py,sha256=2YnbOvrfArKHSGDUnbQ59awLfgOIYR-Owy8e4iFZ8PE,1573
2
2
  model_compression_toolkit/constants.py,sha256=i_R6uXBfO1ph_X6DNJych2x59SUojfJbn7dNjs_mZnc,3846
3
3
  model_compression_toolkit/defaultdict.py,sha256=LSc-sbZYXENMCw3U9F4GiXuv67IKpdn0Qm7Fr11jy-4,2277
4
4
  model_compression_toolkit/logger.py,sha256=3DByV41XHRR3kLTJNbpaMmikL8icd9e1N-nkQAY9oDk,4567
5
5
  model_compression_toolkit/metadata.py,sha256=CsW86SsLEKUK4Unn0JImTJ1sHGGTPfl25cUkYNMSML0,3916
6
6
  model_compression_toolkit/verify_packages.py,sha256=TlS-K1EP-QsghqWUW7SDPkAJiUf7ryw4tvhFDe6rCUk,1405
7
- model_compression_toolkit/core/__init__.py,sha256=tnDtL9KmT0vsOU27SsJ19TKDEbIH-tXYeGxTo5YnNUM,2077
7
+ model_compression_toolkit/core/__init__.py,sha256=8a0wUNBKwTdJGDk_Ho6WQAXjGuCqQZG1FUxxJlAV8L8,2096
8
8
  model_compression_toolkit/core/analyzer.py,sha256=X-2ZpkH1xdXnISnw1yJvXnvV-ssoUh-9LkLISSWNqiY,3691
9
9
  model_compression_toolkit/core/graph_prep_runner.py,sha256=7-b7Jd5jBVaXOWg5nSqbEyzBtdaGDbCxs8aqMV6GZ6I,11287
10
10
  model_compression_toolkit/core/quantization_prep_runner.py,sha256=OtL6g2rTC5mfdKrkzm47EPPW-voGGVYMYxpy2_sfu1U,6547
@@ -41,9 +41,9 @@ model_compression_toolkit/core/common/graph/graph_searches.py,sha256=2oKuW6L8hP-
41
41
  model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py,sha256=3el-A7j1oyoo1_9zq3faQp7IeRsFXFCvnrb3zZFXpU0,9803
42
42
  model_compression_toolkit/core/common/graph/memory_graph/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
43
43
  model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py,sha256=X6FK3C3y8ixFRPjC_wm3ClloCX8_06SOdA1TRi7o_LA,3800
44
- model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py,sha256=7KbAQ21mToemAjmpsUKknRzoljOaQ62VTxUSsLTSskU,2877
45
- model_compression_toolkit/core/common/graph/memory_graph/cut.py,sha256=aPdXJPP5a5Rnu5Z5XqTZZkuGtdgHVu0RmX_NOfNM6Tc,2470
46
- model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py,sha256=gOVnHt0JaZvyuA0T1oTFSR59cwFO46E5OOC53h19nvg,17839
44
+ model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py,sha256=Na1lAoCJCSQw7XGYsV5xCZg762lbP6Y_uAhsUeLP0yM,2870
45
+ model_compression_toolkit/core/common/graph/memory_graph/cut.py,sha256=GctdLnhsPJgY6UGwRcLNpKE8OLkfVWT3wgby2r9QDD4,2645
46
+ model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py,sha256=ZBFIOBBRHuRsiEW31EMwCVb9J7dJo5XBShA_9nnkrRI,17521
47
47
  model_compression_toolkit/core/common/graph/memory_graph/memory_element.py,sha256=ISD2BvJWj5mB91jrFjG8VQb0oOoLBoita_thCZWzCPI,4238
48
48
  model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py,sha256=3OC8kMXuzBv-R7wWmKY-i1AQNAr5x3LBZ4aj7hHF-cQ,7791
49
49
  model_compression_toolkit/core/common/hessian/__init__.py,sha256=E7LK3K_1AwMCQokanNc1JODMwUKNOKmwXQiGQ7GO10I,1033
@@ -106,7 +106,7 @@ model_compression_toolkit/core/common/quantization/core_config.py,sha256=yxCzWql
106
106
  model_compression_toolkit/core/common/quantization/debug_config.py,sha256=zJP2W9apUPX9RstpPWWK71wr9xJsg7j-s7lGV4_bQdc,1510
107
107
  model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py,sha256=fwF4VILaX-u3ZaFd81xjbJuhg8Ef-JX_KfMXW0TPV-I,7136
108
108
  model_compression_toolkit/core/common/quantization/node_quantization_config.py,sha256=PjMZ-otuenng393NS5ZWwdxmpIhDncukHhbYBK3QGVk,26527
109
- model_compression_toolkit/core/common/quantization/quantization_config.py,sha256=nBqwNhbDbWQGYbfazLPHrP_ZCCnjbL-k5q58T8yIAcc,3917
109
+ model_compression_toolkit/core/common/quantization/quantization_config.py,sha256=N12rSoayyDceCOf2FC2aZ-FPEzd_XV_N_tjflJQfDcI,4607
110
110
  model_compression_toolkit/core/common/quantization/quantization_fn_selection.py,sha256=eyosbVdnCwed7oMQ19tqnh0VoyGZ_UAuD_UnNoXyBpo,2210
111
111
  model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py,sha256=MwIOBZ4BlZSTIOG75PDvlI3JmZ6t8YjPc1VP9Adei60,3847
112
112
  model_compression_toolkit/core/common/quantization/quantize_graph_weights.py,sha256=N005MSvx8UypVpa7XrxNrB2G732n2wHj3RmLyjTgd3I,2728
@@ -160,13 +160,13 @@ model_compression_toolkit/core/keras/default_framework_info.py,sha256=PYcER89eEX
160
160
  model_compression_toolkit/core/keras/keras_implementation.py,sha256=HwbIR7x4t-TBNbWHVvVNFk8z-KFt6zM0LWAUXQuNZrk,31753
161
161
  model_compression_toolkit/core/keras/keras_model_validation.py,sha256=1wNV2clFdC9BzIELRLSO2uKf0xqjLqlkTJudwtCeaJk,1722
162
162
  model_compression_toolkit/core/keras/keras_node_prior_info.py,sha256=HUmzEXDQ8LGX7uOYSRiLZ2TNbYxLX9J9IeAa6QYlifg,3927
163
- model_compression_toolkit/core/keras/resource_utilization_data_facade.py,sha256=s56UIgiPipUQRNd2sd1xW6GFfYNMBmrocRCNtvpYLbY,4977
163
+ model_compression_toolkit/core/keras/resource_utilization_data_facade.py,sha256=7F-VOleIF_QqVeOjOUZRkPJoe6eqQJJbEtfsvhtjnBI,5551
164
164
  model_compression_toolkit/core/keras/tf_tensor_numpy.py,sha256=jzD8FGEEa8ZD7w8IpTRdp-Udf1MwOTgjg2XTS1Givic,2696
165
165
  model_compression_toolkit/core/keras/back2framework/__init__.py,sha256=rhIiXg_nBgUZ-baE3M6SzCuQbcnq4iebY1jtJBvKHOM,808
166
166
  model_compression_toolkit/core/keras/back2framework/factory_model_builder.py,sha256=UIQgOOdexycrSKombTMJVvTthR7MlrCihoqM8Kg-rnE,2293
167
167
  model_compression_toolkit/core/keras/back2framework/float_model_builder.py,sha256=9SFHhX-JnkB8PvYIIHRYlReBDI_RkZY9LditzW_ElLk,2444
168
168
  model_compression_toolkit/core/keras/back2framework/instance_builder.py,sha256=fBj13c6zkVoWX4JJG18_uXPptiEJqXClE_zFbaFB6Q8,4517
169
- model_compression_toolkit/core/keras/back2framework/keras_model_builder.py,sha256=ns3zFjngea7yZHrxqcV5FQCAfGcstho37D2S2KQZpwE,18444
169
+ model_compression_toolkit/core/keras/back2framework/keras_model_builder.py,sha256=TY86-Mb8hmo8RgCcQvkSYIthYOqV9e4VIMpqIyouJ4Y,17397
170
170
  model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py,sha256=emsaCYyZBF7oQfXAR0edU7idiMInXLXRuGPcrUp4slM,15301
171
171
  model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py,sha256=5wFb4nx_F0Wu4c8pLf6n6OzxOHtpOJ6_3mQsNSXIudU,2481
172
172
  model_compression_toolkit/core/keras/graph_substitutions/__init__.py,sha256=mjbqLD-KcG3eNeCYpu1GBS7VclGVOQ63x2p6mAAuba4,698
@@ -176,7 +176,7 @@ model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm
176
176
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py,sha256=GR1a3mCZpNUu4WxixJXF_aSm57phAdxaRoHecNx3hxw,3168
177
177
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py,sha256=5df_xGfXkqNub4xVRnCWQvSohWqdv12axjJ6edVU2H0,2478
178
178
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/concat_threshold_update.py,sha256=Hl4LEQ_bw_Vpmf3ZqHujYUqVdvTNsPlEMvr9dZhwg2U,2806
179
- model_compression_toolkit/core/keras/graph_substitutions/substitutions/conv_funcs_to_layer.py,sha256=YHEh3rtTD61doT_oz8Tw7fg5AKKHxXvbpW_GmVbSUVw,11651
179
+ model_compression_toolkit/core/keras/graph_substitutions/substitutions/conv_funcs_to_layer.py,sha256=vZr8Agj-tFKSX7TM2nZjwbHElJqSIyMAaR7FH-lp4YM,11691
180
180
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py,sha256=R3U7cjc2E0zheMem16GHygp5jZFGSaomkNOTxTjcAgw,5794
181
181
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py,sha256=V6hp67CkS_A3WqdsjLjs0ETtdZAOo4P9mhy4aT7W5FE,5940
182
182
  model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py,sha256=AvquvVVVT8-ioeVn-gjqysK4L41L3I7TlNOEDfWjViY,8185
@@ -223,9 +223,9 @@ model_compression_toolkit/core/pytorch/constants.py,sha256=YwD_joIF0vK8UG2vW1NVv
223
223
  model_compression_toolkit/core/pytorch/data_util.py,sha256=YYbT135HhlTt0q6XdD2JX7AS_L92f_uV2rWq2hsJOCA,6325
224
224
  model_compression_toolkit/core/pytorch/default_framework_info.py,sha256=-Vls1P_8Ckm_18nnOsmQkZ71SmzHwtQLbQ383Z4Rb-U,4365
225
225
  model_compression_toolkit/core/pytorch/pytorch_device_config.py,sha256=S25cuw10AW3SEN_fRAGRcG_I3wdvvQx1ehSJzPnn-UI,4404
226
- model_compression_toolkit/core/pytorch/pytorch_implementation.py,sha256=Mfdq15JLKWAAkpnOt_urcPOVXhqONTvzORyLOG-_Klo,29659
226
+ model_compression_toolkit/core/pytorch/pytorch_implementation.py,sha256=7jzJ4TBKNwwQ9E7W-My8LkmYEJHHNn8weNuO1PCGS10,29830
227
227
  model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py,sha256=2LDQ7qupglHQ7o1Am7LWdfYVacfQnl-aW2N6l9det1w,3264
228
- model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py,sha256=xpKj99OZKT9NT0vKIl_cOe8d89d2gef1gKoNT6PFElE,4989
228
+ model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py,sha256=0DwOwMUCYAUyTRFcrlXyUO2S7HftnNqsh1JEoMK2TpM,5472
229
229
  model_compression_toolkit/core/pytorch/utils.py,sha256=7VbgcLwtQvdEEc_AJgSOQ3U3KRKCICFPaBirN1fIQxg,3940
230
230
  model_compression_toolkit/core/pytorch/back2framework/__init__.py,sha256=H_WixgN0elVWf3exgGYsi58imPoYDj5eYPeh6x4yfug,813
231
231
  model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py,sha256=bwppTPRs6gL96nm7qPiKrNcBj4Krr0yEsOWjRF0aXmQ,2339
@@ -248,6 +248,7 @@ model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functio
248
248
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py,sha256=XhiLVcnCc_gF-6mjxbf9C4bYg5YL_GCvDJmcdLkBNAg,4151
249
249
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_linear.py,sha256=3-OHYPun5Rt7GITqV3ZekJk59tsuY9ZYSpRpxKsNEVA,3450
250
250
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py,sha256=CXSMASpc_Zed3BJ2CsER69zKxE6ncFvvKQWDO1JxKYI,5849
251
+ model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/matmul_decomposition.py,sha256=cYV-3Eik_0gv2sDZPdpUP-mXOT4E0I5wikr0C7z6omg,20309
251
252
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py,sha256=VNg-VgzCxSyqy2J3neEPl6U0SPO8UIVU_T47bGhz4FE,38459
252
253
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py,sha256=q1a3HieQtaOmWG2WGXp6GHYAvxa3CZ9dJUx9dqMAsS8,5695
253
254
  model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py,sha256=joHjwiUxccypMHkTy46rI91VyapLn9yJ2YRo5ISnOH4,1987
@@ -363,7 +364,7 @@ model_compression_toolkit/gptq/keras/gptq_keras_implementation.py,sha256=axBwnCS
363
364
  model_compression_toolkit/gptq/keras/gptq_loss.py,sha256=2hzWzsbuVd5XcL85NM57YeOyHxRY0qMArKn8NvQ1UWw,7643
364
365
  model_compression_toolkit/gptq/keras/gptq_training.py,sha256=0WGiP7Gs4xX3FBs1PNaZ7w3hWRigwQXqYjBrs_-x32o,23241
365
366
  model_compression_toolkit/gptq/keras/graph_info.py,sha256=zwoeHX67nJJ5-zYLjzvMXS9TLsy9BsizARbZiDVjVSA,4473
366
- model_compression_toolkit/gptq/keras/quantization_facade.py,sha256=8UcwjE3ALn0mFufXBwqLOgDaGd2OfuoUllB4CqyTpMU,18003
367
+ model_compression_toolkit/gptq/keras/quantization_facade.py,sha256=meRKqpzZe2Irf21L_rN_mkr5dqPTJHzfSFBeqv4Csp4,18536
367
368
  model_compression_toolkit/gptq/keras/quantizer/__init__.py,sha256=-DK1CDXvlsnEbki4lukZLpl6Xrbo91_jcqxXlG5Eg6Q,963
368
369
  model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py,sha256=Rbl9urzkmACvVxICSEyJ02qFOBxWK0UQWtysFJzBVZw,4899
369
370
  model_compression_toolkit/gptq/keras/quantizer/quant_utils.py,sha256=Vt7Qb8i4JsE4sFtcjpfM4FTXTtfV1t6SwfoNH8a_Iaw,5055
@@ -379,7 +380,7 @@ model_compression_toolkit/gptq/pytorch/gptq_loss.py,sha256=_07Zx_43bnNokwR5S8phI
379
380
  model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py,sha256=tECPTavxn8EEwgLaP2zvxdJH6Vg9jC0YOIMJ7857Sdc,1268
380
381
  model_compression_toolkit/gptq/pytorch/gptq_training.py,sha256=WtehnyiYXdUXf8-uNpV0mdsalF7YF7eKnL7tcFrzZoE,19549
381
382
  model_compression_toolkit/gptq/pytorch/graph_info.py,sha256=4mVM-VvnBaA64ACVdOe6wTGHdMSa2UTLIUe7nACLcdo,4008
382
- model_compression_toolkit/gptq/pytorch/quantization_facade.py,sha256=hZFU_ZY-LYcpRZyzzX7NsJievkIYKGdkgBzEoB4rsRQ,16020
383
+ model_compression_toolkit/gptq/pytorch/quantization_facade.py,sha256=kMSq9mrpcgMBRgrEKfMBHaJG6HhGRYnuiDzF4ofckwo,16581
383
384
  model_compression_toolkit/gptq/pytorch/quantizer/__init__.py,sha256=ZHNHo1yzye44m9_ht4UUZfTpK01RiVR3Tr74-vtnOGI,968
384
385
  model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py,sha256=fKg-PNOhGBiL-4eySS9Fyw0GkA76Pq8jT_HbJuJ8iZU,4143
385
386
  model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py,sha256=OocYYRqvl7rZ37QT0hTzfJnWGiNCPskg7cziTlR7TRk,3893
@@ -392,20 +393,20 @@ model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py,sha256
392
393
  model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py,sha256=6uxq_w62jn8DDOt9T7VtA6jZ8jTAPcbTufKFOYpVUm4,8768
393
394
  model_compression_toolkit/pruning/__init__.py,sha256=lQMZS8G0pvR1LVi53nnJHNXgLNTan_MWMdwsVxhjrow,1106
394
395
  model_compression_toolkit/pruning/keras/__init__.py,sha256=3Lkr37Exk9u8811hw8hVqkGcbTQGcLjd3LLuLC3fa_E,698
395
- model_compression_toolkit/pruning/keras/pruning_facade.py,sha256=0XmUqYMrCOXfNJac-k-baegBY7G0Tg3V2HOwGknUubI,8867
396
+ model_compression_toolkit/pruning/keras/pruning_facade.py,sha256=gZPePLuTtSAiFCJ0Y-b_HPizsMKt3mSJKepGo2fMBO8,9202
396
397
  model_compression_toolkit/pruning/pytorch/__init__.py,sha256=pKAdbTCFM_2BrZXUtTIw0ouKotrWwUDF_hP3rPwCM2k,696
397
- model_compression_toolkit/pruning/pytorch/pruning_facade.py,sha256=oStXze__7XCm0RJ_N8iRGWhMKo4JQQYSNEUq_pOVUZI,9546
398
+ model_compression_toolkit/pruning/pytorch/pruning_facade.py,sha256=FMYyawF2qJtKqegljGB0-0YdoCqnR3VskKNajNJSqL8,9885
398
399
  model_compression_toolkit/ptq/__init__.py,sha256=Z_hkmTh7aLFei1DJKV0oNVUbrv_Q_0CTw-qD85Xf8UM,904
399
400
  model_compression_toolkit/ptq/runner.py,sha256=_c1dSjlPPpsx59Vbg1buhG9bZq__OORz1VlPkwjJzoc,2552
400
401
  model_compression_toolkit/ptq/keras/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
401
- model_compression_toolkit/ptq/keras/quantization_facade.py,sha256=7_xoCYzA5TKwJSqMf8GlxlZHOmpAwNdmkfudwJsTIiI,10972
402
+ model_compression_toolkit/ptq/keras/quantization_facade.py,sha256=imGxmB397g96CpoeA0muxShj5dhHaPvLBGQdPn_RYgw,11466
402
403
  model_compression_toolkit/ptq/pytorch/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
403
- model_compression_toolkit/ptq/pytorch/quantization_facade.py,sha256=ynOZ30heMp1bSTCYS6vn3EmmycDJn4G72IYZlzkRFPA,9309
404
- model_compression_toolkit/qat/__init__.py,sha256=b2mURFGsvaZz_CdAD_w2I4Cdu8ZDN-2iGHMBHTKT5ws,1128
404
+ model_compression_toolkit/ptq/pytorch/quantization_facade.py,sha256=WRuNjoR8PgY0A22V5YQa5R1biOOiF99oAJyGSkUZ7t8,9869
405
+ model_compression_toolkit/qat/__init__.py,sha256=AaC4KBha4jDW_tyg2SOxZaKh_idIz0gZtDK3_zxs64E,1241
405
406
  model_compression_toolkit/qat/common/__init__.py,sha256=6tLZ4R4pYP6QVztLVQC_jik2nES3l4uhML0qUxZrezk,829
406
407
  model_compression_toolkit/qat/common/qat_config.py,sha256=xtfVSoyELGXynHNrw86dB9FU3Inu0zwehc3wLrh7JvY,2918
407
408
  model_compression_toolkit/qat/keras/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
408
- model_compression_toolkit/qat/keras/quantization_facade.py,sha256=LNM2HW4cNei3tUhwLdNtsWrox_uSAhaswFxWiMEIrPM,17278
409
+ model_compression_toolkit/qat/keras/quantization_facade.py,sha256=N5PY4jI2t4CpIncRBXzAHd6-4ZOi03wt2NllI1F1Mmk,17771
409
410
  model_compression_toolkit/qat/keras/quantizer/__init__.py,sha256=zmYyCa25_KLCSUCGUDRslh3RCIjcRMxc_oXa54Aui-4,996
410
411
  model_compression_toolkit/qat/keras/quantizer/base_keras_qat_weight_quantizer.py,sha256=EbIt4lMlh6cU4awFLMBp0IlZ2zUUp-WtnlW5Wn19FDM,1793
411
412
  model_compression_toolkit/qat/keras/quantizer/quant_utils.py,sha256=cBULOgWUodcBO1lHevZggdTevuDYI6tQceV86U2x6DA,2543
@@ -417,7 +418,7 @@ model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py,sha256=cc
417
418
  model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py,sha256=pFkrjtlavCniswcO3-Djlh6a_Hz1rrcEa7Z5wTGVRCU,8270
418
419
  model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py,sha256=ZdZwMwLa1Ws2eo3DiQYYTvPS1JfiswZL1xlQPtRnIgE,7067
419
420
  model_compression_toolkit/qat/pytorch/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
420
- model_compression_toolkit/qat/pytorch/quantization_facade.py,sha256=NnFy2E_7SR2m8vfh8Q8VrXOXhe7rMScgXnYBtDpsqVs,13456
421
+ model_compression_toolkit/qat/pytorch/quantization_facade.py,sha256=NGIBYJPRdJWzswdM1LQccAANiiQWMuSDIDAMfbM9o9w,14008
421
422
  model_compression_toolkit/qat/pytorch/quantizer/__init__.py,sha256=xYa4C8pr9cG1f3mQQcBXO_u3IdJN-zl7leZxuXDs86w,1003
422
423
  model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_weight_quantizer.py,sha256=gjzrnBAZr5c_OrDpSjxpQYa_jKImv7ll52cng07_2oE,1813
423
424
  model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py,sha256=lM10cGUkkTDtRyLLdWj5Rk0cgvcxp0uaCseyvrnk_Vg,5752
@@ -430,72 +431,36 @@ model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py,sha2
430
431
  model_compression_toolkit/target_platform_capabilities/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
431
432
  model_compression_toolkit/target_platform_capabilities/constants.py,sha256=iJXGy5um7vhC84Me4ld6EHMhy7jPks0T9ItZX23si6s,1519
432
433
  model_compression_toolkit/target_platform_capabilities/immutable.py,sha256=YhROBiXEIB3TU-bAFrnL3qbAsb1yuWPBAQ_CLOJbYUU,1827
434
+ model_compression_toolkit/target_platform_capabilities/tpc_io_handler.py,sha256=ySheTvg2tks8xWjC07Rc_gWO1xTDpRqICrLGzqYxIaU,4012
433
435
  model_compression_toolkit/target_platform_capabilities/schema/__init__.py,sha256=pKAdbTCFM_2BrZXUtTIw0ouKotrWwUDF_hP3rPwCM2k,696
434
- model_compression_toolkit/target_platform_capabilities/schema/mct_current_schema.py,sha256=E6Zz8boibgfq8EVpZWyl0TOdFrv9qrwiVHUzYPIKVrQ,528
436
+ model_compression_toolkit/target_platform_capabilities/schema/mct_current_schema.py,sha256=k3LkdcZSIy8gJFDLZw3YlYOpqVrJPUnAlWmywpqil3Q,529
435
437
  model_compression_toolkit/target_platform_capabilities/schema/schema_functions.py,sha256=ZDFN2N4dRRP6qs0HxsHXEJbZCwYByo3JL9sBCJolDBs,4656
436
- model_compression_toolkit/target_platform_capabilities/schema/v1.py,sha256=Tl71jtE0bkMei1hCgxjS1LFmHNVEAmxFKAltb3UId6Y,27666
438
+ model_compression_toolkit/target_platform_capabilities/schema/v1.py,sha256=bM14I0P-54o5gqp-3QMGNC_yR80cuWTqrDrBn_gr0YI,27486
437
439
  model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py,sha256=1FXmDVSqm-dr3xzH4vRo4NmAgyzBZjqHo5l63MUq4r0,1403
438
440
  model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py,sha256=WCP1wfFZgM4eFm-pPeUinr5R_aSx5qwfSQqLZCXUNBA,1513
439
- model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2fw.py,sha256=GK_eI9Oq-kgBdfXm0AwgXkYgGKL0FEthqrTd0X_XWg0,2872
440
- model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2keras.py,sha256=mkTjg9JZEKMT_QHtlQPGUZvcuF0lofZUs1DU1h43JjM,6671
441
- model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2pytorch.py,sha256=cn2sP9fnHJ8qfR1AMTwW58mXLOcdT6M7xyE3TLRjnY0,5443
441
+ model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2fw.py,sha256=3XtPUZJ2rbBpj4VLXjubRBc4pMY7j0Vqu3a_dpv4sp8,3632
442
+ model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2keras.py,sha256=z0vOAkaJIyKcw-4We_QyzkPVC7n5G2cq7MEqFMxJb_g,7585
443
+ model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attach2pytorch.py,sha256=kDpjKcj0gwphk0evKRlLq25OtANbljS420_7TmvJANM,6200
442
444
  model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py,sha256=jfhszvuD2Fyy6W2KjlLzXBQKFzTqGAaDZeFVr4-ONQw,8776
443
445
  model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py,sha256=fIheShGOnxWYKqT8saHpBJqOU5RG_1Hp9qHry7IviIw,2115
444
446
  model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py,sha256=Cl6-mACpje2jM8RJkibbqE3hvTkFR3r26-lW021mIiA,4019
445
- model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py,sha256=Yg3sUzn4lpZn7bvNeDU4pO7_Jgr9cuqB66SqNMTh5_U,6867
446
- model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py,sha256=eRRCUqy0yXd3_xrufd7jjaU6hIIXphzcT8yWqvRr8l8,9994
447
+ model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py,sha256=VYcq0juJHfJTcZMQcMLc-q6SSUgdpwwUQR-uWrQKMT4,6568
448
+ model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py,sha256=hP3UHxsAGWowG1M4BPuN9xz1fkmlZfRq_jEZIF8hAgU,9694
447
449
  model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py,sha256=FvrYI0Qy7DCmDp2gyUYyCZq5pY84JgLtJqSIiVTJ8Ss,1030
448
450
  model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
449
- model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py,sha256=CWind2Kd91lzBTRAh1A9sHuNw17xXhMb3gV436RpK8c,3033
451
+ model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py,sha256=nq9ZzS5boBjeSqW1msD2A2hEIZncbrIJfsmMrWH08TI,3328
450
452
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py,sha256=lNJ29DYxaLUPDstRDA1PGI5r9Fulq_hvrZMlhst1Z5g,697
451
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py,sha256=yIWwvfTpiT0wRf7GwPgK9elKbGh46jxCrkcLVEjvesU,6081
452
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py,sha256=eVIRpx5O0JQI7TSdw5JAWtwrG3MQ8-7hYThQvB9da5c,1528
453
+ model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py,sha256=FNZ7jRh-iyO6CZ95geIWLLw2tx5v6edxxPkLkZB0sRU,1580
453
454
  model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py,sha256=1mMOREEMoNHu_KTMGDp4crN61opKWX6aFn1DrDLvqcc,717
454
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py,sha256=TbUKrPAy4xntH1UIWS-rOngJhSHFQiHZl4dHKvve2WM,11449
455
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py,sha256=DiEVKde6bZiRDcoeTKzbrfjFIDVEeES0Q_Ms50NbW7Y,6568
456
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py,sha256=rQY-ApvLKo9LbN2uKO2NsdOgX49TKcED3o8mBxWAFKw,5594
457
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py,sha256=vFDyiMymNZSRCdTgAyWn4A-tZD3vzze_PTLBSF2OYe8,721
458
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py,sha256=ip8MRXok-3mhQDTZW4mctPn8Lvdaw46Ds1DHd4cSGLA,11352
459
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py,sha256=I3NnmCBSB6KB8ECXJsfXw6FD-ONj39RXL-yB2-nE1xI,6577
460
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py,sha256=R6ZDXT2bwAmdZfmXxIoCo7-_h7oGfyr6cZoZmBJdPa0,5713
461
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py,sha256=NUuczImqUxzdfflqSdqkeAN8aCU6Tuiu6U0Fnj9Tzmw,721
462
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py,sha256=PCV_SIENE65Ap15ka52yJde98Llsi5YGx7Uvx5aBkDg,11138
463
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py,sha256=ovHI4lvlcP_haolXmL8TvIpPi9tglhdUxRxNxuf6QPk,6581
464
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py,sha256=PgNAmXZx7hg46KwR16laU7jr2U35rnHiTcR25RaLxd0,5732
465
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/__init__.py,sha256=vKWAoQ2KkhuptS5HZB50zHG6KY8wHpHTxPugw_nGCRo,717
466
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py,sha256=3Q3THifL5TUrEGweFL_t2nOpf-h7ipA38FZyanGSdxk,11524
467
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py,sha256=i6oEt_3FAeccU9QkVCVxWZf2aX17IExAljR8y13k9P4,6663
468
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_pytorch.py,sha256=Iwi-D_0iC19Lo3yWduuaItezXFrRxRhowUY4jGOtwXk,5700
469
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/__init__.py,sha256=wUk4Xsg7jpxOWYjq2K3WUwLcI185p_sVPK-ttG0ydhA,721
470
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py,sha256=sV43EqH6gZzW8MGuMzCqLAPMRzLafcr1LpSmz5NJUjg,11404
471
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py,sha256=e3su6KmNsc2ziP3eEICp-tcnY9YmGPiLoMJ3TreqVx4,6671
472
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py,sha256=9W-pjOhONqgym1t2vDRTo7x-JQiVlxQsAKAG6HdAww4,5707
473
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/__init__.py,sha256=gAeebYCKyIXH9-Qwze7FwvTihudzAHk_Qsg94fQbkjQ,717
474
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tp_model.py,sha256=Z7QdKzO4zUAhq_sab0N7tWsrhi6hoLIpvK4kI84h-eQ,13595
475
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_keras.py,sha256=vbBgQfEd5mLnJKGX2CO-KA0x87_qTmDH7HbbtLgCIfg,6881
476
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_pytorch.py,sha256=oDG_Ln0mPmt8p5eKrjGQlHLHCApErLHazny9bIfu3iI,5968
477
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/__init__.py,sha256=C2kwyDE1-rtukkbNSoKRv9q8Nt2GOCaBbl0BdOr3goA,721
478
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tp_model.py,sha256=ogo0fXC3os0M5yogWE9g3hSKey7PYxaO5jqj3nXQh5Q,12373
479
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_keras.py,sha256=hHK7MY6xfSCRnXQ6Qz0hbN_hM18f-gf3uZmxdl44khU,6679
480
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_pytorch.py,sha256=GmS3CuSQPwLSgPdruXCSHN49_fRiRBn9PKA9CPmtqM8,5789
481
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/__init__.py,sha256=tHTUvsaerSfbe22pU0kIDauPpFD7Pq5EmZytVIDkHz4,717
482
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/tp_model.py,sha256=qmv2ZA5QsUy3fwX44dF1WBJZVki9xuGOScIY4zIqI4I,19288
483
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/tpc_keras.py,sha256=IlaTaq2VnGibqwr-rKkqRTD-FK58H1CHGiPiopXD5VA,8291
484
- model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v4/tpc_pytorch.py,sha256=7AhR56oCyXVLvWPB36tNiaLRIGzDLWYXghUjTRADX5s,7094
455
+ model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py,sha256=QnImYHc3vMUaOe4j58sL5c8u71sBxcJqIV2eq3yzck4,15293
485
456
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
486
- model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py,sha256=is00rNrDmmirYsyMtMkWz0DwOA92-x7hAJwpd6z1n2E,2806
487
- model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py,sha256=CXC-HQolSDu7j8V-Xm-SWGCd74gXB3XnAkEhI_TVbIQ,1516
457
+ model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py,sha256=A3PMZxCM1q28QDmIylXSU8kQOQdXWUqF2xGqSIYxBwo,1673
488
458
  model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py,sha256=t4JKsPcor-7KSCKzIwuaBv0NLNwfhuewAQGlDl6iBeo,717
489
- model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py,sha256=-v7mqYyMTRTpRpyCAij4ycOvogUV9ObfJLoCVeZ24HA,8655
490
- model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py,sha256=JKJy4k7TBCRZQ_cSWNhEdvyg5ylvIcpjU_6GALBOaFI,4461
491
- model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py,sha256=x5ooqCuKtW6ULenncjwSs_HTps8yUylOBKOzpgJ4yYI,3788
459
+ model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py,sha256=BWtoUDrSGaVZQdV5_PTtijXIU2AAMStXPtf_QDA4T8E,9377
492
460
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py,sha256=cco4TmeIDIh32nj9ZZXVkws4dd9F2UDrmjKzTN8G0V0,697
493
- model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py,sha256=_tf41m40fbax27y5A5JoGHw4p5NY-Kb3c8oxSTnRD_E,2802
494
- model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py,sha256=LIUUQn42YU7oD2YfnEgP0gfqm7Hq9e0fD_8418aKzKI,1511
461
+ model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py,sha256=DzrowqbJF6GRz7GQ87UZkNT5jtDyCELek3NN49YoPP0,1584
495
462
  model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py,sha256=t4JKsPcor-7KSCKzIwuaBv0NLNwfhuewAQGlDl6iBeo,717
496
- model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py,sha256=jXyp2qZ0VlpquviXjPwoDd1sZl56yXVDaosQhQTslL4,10930
497
- model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py,sha256=4vQG9uaV5bAte1VP8oMT5dwiDisW84F1B-de0BdBusY,6808
498
- model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py,sha256=uG27HAOrD-JMSDXaEycDJeFGqhF8J3ZqKI4CJCW6zA4,5934
463
+ model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py,sha256=LevuaUOfQS681CPzA15dbpNXJx5eD9xCGkMbI4A9jEs,12755
499
464
  model_compression_toolkit/trainable_infrastructure/__init__.py,sha256=uewpvlPkH9mBFt8IxoAgIfz6iEcvWbOImm_fb6_BxD8,1543
500
465
  model_compression_toolkit/trainable_infrastructure/common/__init__.py,sha256=huHoBUcKNB6BnY6YaUCcFvdyBtBI172ZoUD8ZYeNc6o,696
501
466
  model_compression_toolkit/trainable_infrastructure/common/annealing_schedulers.py,sha256=qm2_wa61nga08Jdcl3RkgTsJ0zyHNjZ_A6I2--oVOig,2455
@@ -549,7 +514,7 @@ model_compression_toolkit/xquant/common/xquant_config.py,sha256=YPqvIQanHwadSqa3
549
514
  model_compression_toolkit/xquant/keras/__init__.py,sha256=zbtceCVRsi-Gvl_pOmq5laqVqu55vAU1ie2FR2RK1Po,709
550
515
  model_compression_toolkit/xquant/keras/dataset_utils.py,sha256=quvVymhvpcPIOneCu5J6K_QAqBHOCIj8IxZxSN2fItA,2258
551
516
  model_compression_toolkit/xquant/keras/facade_xquant_report.py,sha256=7pf3PUMAj7BCsbRc6Up6KOWk1g_9wVXwoGUbtrSgX7Y,3502
552
- model_compression_toolkit/xquant/keras/keras_report_utils.py,sha256=zUvhqehKKRHEkk6y8g1xQH47b6fTMuPy6stGEZ6mI24,3081
517
+ model_compression_toolkit/xquant/keras/keras_report_utils.py,sha256=8xeOEovTNLbn0r-7sx31N1n6j-k__rAuVHg3KB4KEFU,3649
553
518
  model_compression_toolkit/xquant/keras/model_analyzer.py,sha256=WXi9BPI9_TzRWn50lM1i-6cwPPRW0p43Shg_xpHFclU,6521
554
519
  model_compression_toolkit/xquant/keras/similarity_functions.py,sha256=P2qMJAo94Sz_BCao-bnhEeewKtjeLLDDH2r9luDXJ04,2710
555
520
  model_compression_toolkit/xquant/keras/tensorboard_utils.py,sha256=h67lf_agZwOuzF37or1YSF1dbTCdw-b3UyvTeRXhTp8,9225
@@ -557,11 +522,11 @@ model_compression_toolkit/xquant/pytorch/__init__.py,sha256=ycb1Xt7PtixY2Uabr94J
557
522
  model_compression_toolkit/xquant/pytorch/dataset_utils.py,sha256=KFKiFkhIPpEr1ZH5jekZFrgs20VzzKVxSV9YMgH68yI,2894
558
523
  model_compression_toolkit/xquant/pytorch/facade_xquant_report.py,sha256=sr_7TkmkRE0FhdJ7BwXGLFELmR4l_nK7IlTys6oYgoU,3179
559
524
  model_compression_toolkit/xquant/pytorch/model_analyzer.py,sha256=b93o800yVB3Z-ihJBLy5Cic-MQiUM_ZGV6SCXoNdscE,5549
560
- model_compression_toolkit/xquant/pytorch/pytorch_report_utils.py,sha256=bOc-hFL3gdoSM1Th_S2N_-9JJSlPGpZCTx_QLJHS6lg,3388
525
+ model_compression_toolkit/xquant/pytorch/pytorch_report_utils.py,sha256=3jNiV5Z4BVw9cEWuLKNOlLuLdr0EMuKg6eYnSiAq3LU,3952
561
526
  model_compression_toolkit/xquant/pytorch/similarity_functions.py,sha256=CERxq5K8rqaiE-DlwhZBTUd9x69dtYJlkHOPLB54vm8,2354
562
527
  model_compression_toolkit/xquant/pytorch/tensorboard_utils.py,sha256=mkoEktLFFHtEKzzFRn_jCnxjhJolK12TZ5AQeDHzUO8,9767
563
- mct_nightly-2.2.0.20250106.546.dist-info/LICENSE.md,sha256=aYSSIb-5AFPeITTvXm1UAoe0uYBiMmSS8flvXaaFUks,10174
564
- mct_nightly-2.2.0.20250106.546.dist-info/METADATA,sha256=DlkrE-gT3fXxmIo48KbIE0Q2nuoOIpB1VRQDec1JzIk,26461
565
- mct_nightly-2.2.0.20250106.546.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
566
- mct_nightly-2.2.0.20250106.546.dist-info/top_level.txt,sha256=gsYA8juk0Z-ZmQRKULkb3JLGdOdz8jW_cMRjisn9ga4,26
567
- mct_nightly-2.2.0.20250106.546.dist-info/RECORD,,
528
+ mct_nightly-2.2.0.20250107.15510.dist-info/LICENSE.md,sha256=aYSSIb-5AFPeITTvXm1UAoe0uYBiMmSS8flvXaaFUks,10174
529
+ mct_nightly-2.2.0.20250107.15510.dist-info/METADATA,sha256=hzg6vLVTb7Mr6NUgWR73ODaN4AIjmActNPhRlH7pGfM,26463
530
+ mct_nightly-2.2.0.20250107.15510.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
531
+ mct_nightly-2.2.0.20250107.15510.dist-info/top_level.txt,sha256=gsYA8juk0Z-ZmQRKULkb3JLGdOdz8jW_cMRjisn9ga4,26
532
+ mct_nightly-2.2.0.20250107.15510.dist-info/RECORD,,
@@ -27,4 +27,4 @@ from model_compression_toolkit import data_generation
27
27
  from model_compression_toolkit import pruning
28
28
  from model_compression_toolkit.trainable_infrastructure.keras.load_model import keras_load_quantized_model
29
29
 
30
- __version__ = "2.2.0.20250106.000546"
30
+ __version__ = "2.2.0.20250107.015510"
@@ -18,7 +18,7 @@ from model_compression_toolkit.core.common import network_editors as network_edi
18
18
  from model_compression_toolkit.core.common.quantization.debug_config import DebugConfig
19
19
  from model_compression_toolkit.core.common.quantization import quantization_config
20
20
  from model_compression_toolkit.core.common.mixed_precision import mixed_precision_quantization_config
21
- from model_compression_toolkit.core.common.quantization.quantization_config import QuantizationConfig, QuantizationErrorMethod, DEFAULTCONFIG
21
+ from model_compression_toolkit.core.common.quantization.quantization_config import QuantizationConfig, QuantizationErrorMethod, DEFAULTCONFIG, CustomOpsetLayers
22
22
  from model_compression_toolkit.core.common.quantization.bit_width_config import BitWidthConfig
23
23
  from model_compression_toolkit.core.common.quantization.core_config import CoreConfig
24
24
  from model_compression_toolkit.core.common.mixed_precision.resource_utilization_tools.resource_utilization import ResourceUtilization
@@ -49,7 +49,7 @@ def compute_graph_max_cut(memory_graph: MemoryGraph,
49
49
  it = 0
50
50
  while it < n_iter:
51
51
  estimate = (u_bound + l_bound) / 2
52
- schedule, max_cut_size, cuts = max_cut_astar.solve(estimate_factor=estimate, iter_limit=astar_n_iter)
52
+ schedule, max_cut_size, cuts = max_cut_astar.solve(estimate=estimate, iter_limit=astar_n_iter)
53
53
  if schedule is None:
54
54
  l_bound = estimate
55
55
  else:
@@ -64,7 +64,10 @@ class Cut:
64
64
  """
65
65
  if isinstance(other, Cut):
66
66
  return self.mem_elements == other.mem_elements
67
- return False
67
+ return False # pragma: no cover
68
68
 
69
69
  def __hash__(self):
70
- return hash((frozenset(self.op_order), frozenset(self.op_record), self.mem_elements))
70
+ return hash((frozenset(self.op_order), frozenset(self.op_record), self.mem_elements))
71
+
72
+ def __repr__(self):
73
+ return f"<Cut: Nodes={[e.node_name for e in self.mem_elements.elements]}, size={self.memory_size()}>" # pragma: no cover
@@ -100,7 +100,7 @@ class MaxCutAstar:
100
100
  edges_src_ab = [(src_dummy_a, src_dummy_b)]
101
101
  edges_src_ba = [(src_dummy_b, src_a) for src_a in memory_graph.sources_a]
102
102
 
103
- # Target Cut
103
+ # Target Cut (Adding 2 consecutive dummy nodes so the final cut will include only dummy tensors).
104
104
  target_dummy_a = next(gen_a)
105
105
  target_dummy_a2 = next(gen_a)
106
106
  target_dummy_b = next(gen_b)
@@ -122,13 +122,13 @@ class MaxCutAstar:
122
122
  self.target_cut = Cut([], set(), MemoryElements(elements={target_dummy_b, target_dummy_b2},
123
123
  total_size=0))
124
124
 
125
- def solve(self, estimate_factor: float, iter_limit: int = 500) -> Tuple[List[BaseNode], float, List[Cut]]:
125
+ def solve(self, estimate: float, iter_limit: int = 500) -> Tuple[List[BaseNode], float, List[Cut]]:
126
126
  """
127
127
  The AStar solver function. This method runs an AStar-like search on the memory graph,
128
- using the given estimate_factor as a heuristic gap for solutions to consider.
128
+ using the given estimate as a heuristic gap for solutions to consider.
129
129
 
130
130
  Args:
131
- estimate_factor: A multiplication factor which allows the search to consider larger size of nodes in each
131
+ estimate: Cut size estimation to consider larger size of nodes in each
132
132
  expansion step, in order to fasten the algorithm divergence towards a solution.
133
133
  iter_limit: An upper limit for the number of expansion steps that the algorithm preforms.
134
134
 
@@ -148,17 +148,14 @@ class MaxCutAstar:
148
148
 
149
149
  while expansion_count < iter_limit and len(open_list) > 0:
150
150
  # Choose next node to expand
151
- next_cut = self._get_cut_to_expand(open_list, costs, routes, estimate_factor)
151
+ next_cut = self._get_cut_to_expand(open_list, costs, routes, estimate)
152
152
 
153
153
  cut_cost = costs[next_cut]
154
154
  cut_route = routes[next_cut]
155
155
 
156
156
  if next_cut == self.target_cut:
157
- # TODO maxcut: Why do we filter the cuts (cut_route) but not the max cut size (cut_sost).
158
- # This is a mismatch between max_cut and max(cuts).
159
- # Also, unfiltered cut_route seems perfect, including input and output tensor sizes of current op.
160
- return self._remove_dummys_from_path(cut_route[0].op_order), cut_cost,\
161
- list(set([self._remove_dummys_from_cut(self.clean_memory_for_next_step(c)) for c in cut_route]))
157
+ return self._remove_dummy_nodes_from_path(cut_route[0].op_order), cut_cost,\
158
+ list(set([self._remove_dummy_tensors_from_cut(c) for c in cut_route]))
162
159
 
163
160
  if self.is_pivot(next_cut):
164
161
  # Can clear all search history
@@ -176,7 +173,7 @@ class MaxCutAstar:
176
173
  expansion_count += 1
177
174
 
178
175
  # Only consider nodes that where not already visited
179
- expanded_cuts = list(filter(lambda _c: _c not in closed_list, expanded_cuts))
176
+ expanded_cuts = [_c for _c in expanded_cuts if _c not in closed_list]
180
177
  for c in expanded_cuts:
181
178
  cost = self.accumulate(cut_cost, c.memory_size())
182
179
  if c not in open_list:
@@ -191,7 +188,7 @@ class MaxCutAstar:
191
188
  self._update_expanded_node(c, cost, cut_route, open_list, costs, routes)
192
189
 
193
190
  # Halt or No Solution
194
- # TODO maxcut: this isn't covered in the coverage test. check if needed and remove no cover
191
+ # TODO maxcut: this isn't covered in the coverage test. Add test and remove no cover
195
192
  return None, 0, None # pragma: no cover
196
193
 
197
194
  @staticmethod
@@ -214,7 +211,7 @@ class MaxCutAstar:
214
211
  routes.update({cut: [cut] + route})
215
212
 
216
213
  def _get_cut_to_expand(self, open_list: List[Cut], costs: Dict[Cut, float], routes: Dict[Cut, List[Cut]],
217
- estimate_factor: float) -> Cut:
214
+ estimate: float) -> Cut:
218
215
  """
219
216
  An auxiliary method for finding a cut for expanding the search out of a set of potential cuts for expansion.
220
217
 
@@ -222,13 +219,15 @@ class MaxCutAstar:
222
219
  open_list: The search open list.
223
220
  costs: The search utility mapping between cuts and their cost.
224
221
  routes: The search utility mapping between cuts and their routes.
225
- estimate_factor: A multiplication factor to set extended boundaries on the potential cuts to exapand.
222
+ estimate: Cut size estimation to set extended boundaries on the potential cuts to expand.
226
223
 
227
224
  Returns: A sorted list of potential cuts for expansion (ordered by lowest cost first).
228
225
 
229
226
  """
227
+ max_cut_len = max([len(routes[c]) for c in open_list])
230
228
  ordered_cuts_list = sorted(open_list,
231
- key=lambda c: (self.accumulate(costs[c], self.estimate(c, estimate_factor)), -len(routes[c])))
229
+ key=lambda c: (self.accumulate(costs[c], self.estimate(c, estimate)),
230
+ max_cut_len - len(routes[c])))
232
231
 
233
232
  assert len(ordered_cuts_list) > 0
234
233
  return ordered_cuts_list[0]
@@ -356,7 +355,8 @@ class MaxCutAstar:
356
355
  # TODO maxcut: this isn't covered in the coverage test. check if needed and remove no cover
357
356
  return cost_1 < cost_2 # pragma: no cover
358
357
 
359
- def estimate(self, cut: Cut, estimate_factor: float) -> float:
358
+ @staticmethod
359
+ def estimate(cut: Cut, estimate: float) -> float:
360
360
  """
361
361
  A function that defines the estimation gap for the Astar search.
362
362
  The estimation gap is used to sort the cuts that are considered for expanding the search in each iteration.
@@ -364,15 +364,15 @@ class MaxCutAstar:
364
364
  Args:
365
365
  cut: A cut (not used in the default implementation, but can be used if overriding the method to consider
366
366
  the actual cut in the estimation computation).
367
- estimate_factor: The given estimate factor to the search.
367
+ estimate: The given estimate to the search.
368
368
 
369
369
  Returns: An estimation value.
370
370
 
371
371
  """
372
- return estimate_factor * self.memory_graph.memory_lbound_single_op
372
+ return estimate
373
373
 
374
374
  @staticmethod
375
- def get_init_estimate_factor(memory_graph: MemoryGraph) -> float:
375
+ def get_init_estimate(memory_graph: MemoryGraph) -> float: # pragma: no cover
376
376
  """
377
377
  Returns an initial estimation value, which is based on the memory graph's upper and lower bounds.
378
378
 
@@ -383,12 +383,12 @@ class MaxCutAstar:
383
383
 
384
384
  """
385
385
  # TODO maxcut: this isn't covered in the coverage test. check if needed and remove no cover
386
- l_bound = memory_graph.memory_lbound_single_op # pragma: no cover
387
- u_bound = 2 * sum([t.total_size for t in memory_graph.b_nodes]) - l_bound # pragma: no cover
388
- return (u_bound + l_bound) / 2 # pragma: no cover
386
+ l_bound = memory_graph.memory_lbound_single_op
387
+ u_bound = 2 * sum([t.total_size for t in memory_graph.b_nodes]) - l_bound
388
+ return (u_bound + l_bound) / 2
389
389
 
390
390
  @staticmethod
391
- def _remove_dummys_from_path(path: List[BaseNode]) -> List[BaseNode]:
391
+ def _remove_dummy_nodes_from_path(path: List[BaseNode]) -> List[BaseNode]:
392
392
  """
393
393
  An auxiliary method which removes dummy nodes from a given list of nodes (a path in the graph).
394
394
 
@@ -401,7 +401,7 @@ class MaxCutAstar:
401
401
  return list(filter(lambda n: DUMMY_NODE not in n.name, path))
402
402
 
403
403
  @staticmethod
404
- def _remove_dummys_from_cut(cut: Cut) -> Cut:
404
+ def _remove_dummy_tensors_from_cut(cut: Cut) -> Cut:
405
405
  """
406
406
  An auxiliary method which removes dummy nodes from a given cut.
407
407
 
@@ -411,7 +411,7 @@ class MaxCutAstar:
411
411
  Returns: The same cut without dummy nodes elements.
412
412
 
413
413
  """
414
- filtered_memory_elements = set(filter(lambda elm: DUMMY_TENSOR not in elm.node_name, cut.mem_elements.elements))
414
+ filtered_memory_elements = set([elm for elm in cut.mem_elements.elements if DUMMY_TENSOR not in elm.node_name])
415
415
 
416
416
  return Cut(cut.op_order, cut.op_record,
417
417
  mem_elements=MemoryElements(filtered_memory_elements,
@@ -13,13 +13,30 @@
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
15
 
16
- from dataclasses import dataclass, field
16
+ from dataclasses import dataclass
17
17
  import math
18
18
  from enum import Enum
19
+ from typing import Optional, Dict, NamedTuple, List
19
20
 
21
+ from model_compression_toolkit import DefaultDict
20
22
  from model_compression_toolkit.constants import MIN_THRESHOLD
21
23
 
22
24
 
25
+ class CustomOpsetLayers(NamedTuple):
26
+ """
27
+ This struct defines a set of operators from a specific framework, which will be used to configure a custom operator
28
+ set in the TPC.
29
+
30
+ Args:
31
+ operators: a list of framework operators to map to a certain custom opset name.
32
+ attr_mapping: a mapping between an opset name to a mapping between its attributes' general names and names in
33
+ the framework.
34
+ """
35
+
36
+ operators: List
37
+ attr_mapping: Optional[Dict[str, DefaultDict]] = None
38
+
39
+
23
40
  class QuantizationErrorMethod(Enum):
24
41
  """
25
42
  Method for quantization threshold selection:
@@ -86,6 +103,7 @@ class QuantizationConfig:
86
103
  concat_threshold_update: bool = False
87
104
  activation_bias_correction: bool = False
88
105
  activation_bias_correction_threshold: float = 0.0
106
+ custom_tpc_opset_to_layer: Optional[Dict[str, CustomOpsetLayers]] = None
89
107
 
90
108
 
91
109
  # Default quantization configuration the library use.
@@ -49,38 +49,6 @@ FQ_NODE_OP_V2_4 = 'quantization.fake_quant_with_min_max_vars'
49
49
  BATCH_INPUT_SHAPE = 'batch_input_shape'
50
50
 
51
51
 
52
- def get_node_name_from_layer(layer: Layer) -> str:
53
- """
54
- Get a node's name from the layer it was built from. For TensorFlowOpLayer
55
- we remove the prefix "tf_op_layer".
56
-
57
- Args:
58
- layer: Keras Layer to get its corresponding node's name.
59
-
60
- Returns:
61
- Name of the node that was built from the passed layer.
62
- """
63
-
64
- name = layer.name
65
- if isinstance(layer, TensorFlowOpLayer): # remove TF op layer prefix
66
- name = '_'.join(name.split('_')[3:])
67
- return name
68
-
69
-
70
- def is_layer_fake_quant(layer: Layer) -> bool:
71
- """
72
- Check whether a Keras layer is a fake quantization layer or not.
73
- Args:
74
- layer: Layer to check if it's a fake quantization layer or not.
75
-
76
- Returns:
77
- Whether a Keras layer is a fake quantization layer or not.
78
- """
79
- # in tf2.3 fake quant node is implemented as TensorFlowOpLayer, while in tf2.4 as TFOpLambda
80
- return (isinstance(layer, TensorFlowOpLayer) and layer.node_def.op == FQ_NODE_OP_V2_3) or (
81
- isinstance(layer, TFOpLambda) and layer.symbol == FQ_NODE_OP_V2_4)
82
-
83
-
84
52
  class KerasModelBuilder(BaseModelBuilder):
85
53
  """
86
54
  Builder for Keras models.
@@ -291,7 +259,7 @@ class KerasModelBuilder(BaseModelBuilder):
291
259
  arg = n.weights.get(pos)
292
260
  if arg is None:
293
261
  if len(input_tensors) == 0:
294
- Logger.critical(f"Couldn't find a weight or input tensor matching operator's "
262
+ Logger.critical(f"Couldn't find a weight or input tensor matching operator's " # pragma: no cover
295
263
  f"argument name '{k}' in location {pos} for node {n.name}.")
296
264
  arg = input_tensors.pop(0)
297
265
  op_call_kwargs.update({k: arg})
@@ -141,7 +141,7 @@ class Conv2dFuncToConv2dLayer(common.BaseSubstitution):
141
141
  strides = self._parse_tf_stride_dilation(conv_func_node, STRIDES)
142
142
  if strides is None:
143
143
  # Non-standard strides -> skip substitution.
144
- return graph
144
+ return graph # pragma: no cover
145
145
  conv_fw_attr[STRIDES] = strides
146
146
 
147
147
  padding = conv_func_node.op_call_kwargs.get(PADDING) or 'VALID'
@@ -153,7 +153,7 @@ class Conv2dFuncToConv2dLayer(common.BaseSubstitution):
153
153
  dilations = self._parse_tf_stride_dilation(conv_func_node, DILATIONS)
154
154
  if dilations is None:
155
155
  # Non-standard dilations -> skip substitution.
156
- return graph
156
+ return graph # pragma: no cover
157
157
  conv_fw_attr[DILATION_RATE] = dilations
158
158
 
159
159
  if b is None: