mct-nightly 1.10.0.20231101.post420__tar.gz → 1.10.0.20231103.post353__tar.gz

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 (461) hide show
  1. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/PKG-INFO +1 -1
  2. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/PKG-INFO +1 -1
  3. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/framework_implementation.py +5 -7
  4. mct-nightly-1.10.0.20231103.post353/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +34 -0
  5. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +5 -2
  6. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +1 -8
  7. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +129 -119
  8. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +7 -1
  9. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +1 -46
  10. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/keras_implementation.py +6 -8
  11. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +5 -6
  12. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_training.py +1 -23
  13. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/setup.cfg +1 -1
  14. mct-nightly-1.10.0.20231101.post420/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -75
  15. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/LICENSE.md +0 -0
  16. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/README.md +0 -0
  17. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/SOURCES.txt +0 -0
  18. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/dependency_links.txt +0 -0
  19. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/requires.txt +0 -0
  20. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/top_level.txt +0 -0
  21. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/__init__.py +0 -0
  22. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/constants.py +0 -0
  23. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/__init__.py +0 -0
  24. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/analyzer.py +0 -0
  25. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/__init__.py +0 -0
  26. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
  27. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
  28. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
  29. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
  30. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
  31. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
  32. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
  33. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
  34. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
  35. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/statistics_collector_generator.py +0 -0
  36. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/data_loader.py +0 -0
  37. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/defaultdict.py +0 -0
  38. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/framework_info.py +0 -0
  39. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
  40. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
  41. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
  42. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/base_graph.py +0 -0
  43. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/base_node.py +0 -0
  44. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/edge.py +0 -0
  45. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/functional_node.py +0 -0
  46. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
  47. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
  48. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
  49. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
  50. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
  51. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
  52. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
  53. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
  54. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
  55. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
  56. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
  57. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +0 -0
  58. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +0 -0
  59. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
  60. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
  61. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
  62. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
  63. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/function.py +0 -0
  64. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
  65. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
  66. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/memory_computation.py +0 -0
  67. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
  68. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
  69. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
  70. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
  71. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
  72. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/__init__.py +0 -0
  73. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi.py +0 -0
  74. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_aggregation_methods.py +0 -0
  75. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_data.py +0 -0
  76. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_functions_mapping.py +0 -0
  77. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_methods.py +0 -0
  78. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
  79. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
  80. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
  81. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
  82. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
  83. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
  84. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
  85. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/model_collector.py +0 -0
  86. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/model_validation.py +0 -0
  87. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
  88. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
  89. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
  90. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/network_editors/node_filters.py +0 -0
  91. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
  92. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
  93. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +0 -0
  94. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
  95. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
  96. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
  97. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -0
  98. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_analyzer.py +0 -0
  99. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_config.py +0 -0
  100. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
  101. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
  102. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
  103. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +0 -0
  104. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/kmeans_params.py +0 -0
  105. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +0 -0
  106. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
  107. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +0 -0
  108. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
  109. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
  110. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +0 -0
  111. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +0 -0
  112. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +0 -0
  113. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
  114. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
  115. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
  116. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantizers/kmeans_quantizer.py +0 -0
  117. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
  118. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
  119. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
  120. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +0 -0
  121. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/similarity_analyzer.py +0 -0
  122. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
  123. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
  124. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
  125. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
  126. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
  127. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
  128. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
  129. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
  130. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
  131. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
  132. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
  133. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
  134. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
  135. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
  136. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
  137. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
  138. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
  139. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
  140. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/user_info.py +0 -0
  141. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
  142. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
  143. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
  144. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
  145. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/exporter.py +0 -0
  146. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/graph_prep_runner.py +0 -0
  147. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/__init__.py +0 -0
  148. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
  149. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
  150. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
  151. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
  152. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +0 -0
  153. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
  154. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
  155. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/constants.py +0 -0
  156. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
  157. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
  158. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
  159. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
  160. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
  161. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
  162. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
  163. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
  164. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
  165. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
  166. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +0 -0
  167. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
  168. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
  169. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_relu_upper_bound.py +0 -0
  170. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +0 -0
  171. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
  172. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
  173. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
  174. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
  175. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
  176. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
  177. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
  178. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
  179. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +0 -0
  180. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
  181. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/keras_node_prior_info.py +0 -0
  182. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/kpi_data_facade.py +0 -0
  183. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
  184. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
  185. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
  186. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
  187. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
  188. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
  189. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
  190. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
  191. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/common.py +0 -0
  192. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
  193. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
  194. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
  195. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
  196. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
  197. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
  198. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/node_builder.py +0 -0
  199. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
  200. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
  201. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
  202. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +0 -0
  203. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
  204. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
  205. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
  206. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
  207. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
  208. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
  209. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
  210. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +0 -0
  211. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
  212. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
  213. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
  214. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
  215. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/constants.py +0 -0
  216. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
  217. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
  218. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
  219. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
  220. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
  221. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
  222. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +0 -0
  223. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +0 -0
  224. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
  225. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py +0 -0
  226. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
  227. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
  228. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +0 -0
  229. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
  230. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
  231. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
  232. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
  233. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
  234. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
  235. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
  236. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/hessian/pytorch_model_gradients.py +0 -0
  237. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
  238. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +0 -0
  239. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/kpi_data_facade.py +0 -0
  240. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
  241. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
  242. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
  243. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +0 -0
  244. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
  245. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
  246. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
  247. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
  248. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
  249. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
  250. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
  251. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
  252. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
  253. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/utils.py +0 -0
  254. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/runner.py +0 -0
  255. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/__init__.py +0 -0
  256. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
  257. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/constants.py +0 -0
  258. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
  259. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
  260. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/enums.py +0 -0
  261. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
  262. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
  263. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
  264. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
  265. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
  266. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
  267. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
  268. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
  269. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
  270. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
  271. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
  272. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
  273. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
  274. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
  275. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
  276. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
  277. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
  278. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
  279. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
  280. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
  281. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
  282. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
  283. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
  284. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
  285. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
  286. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
  287. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
  288. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/__init__.py +0 -0
  289. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
  290. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
  291. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
  292. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
  293. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
  294. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
  295. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
  296. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
  297. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
  298. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
  299. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
  300. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
  301. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
  302. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
  303. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
  304. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
  305. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
  306. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
  307. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
  308. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +0 -0
  309. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
  310. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizers.py +0 -0
  311. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
  312. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
  313. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
  314. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +0 -0
  315. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
  316. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizers.py +0 -0
  317. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
  318. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/__init__.py +0 -0
  319. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/__init__.py +0 -0
  320. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
  321. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
  322. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
  323. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
  324. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
  325. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
  326. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
  327. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
  328. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
  329. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
  330. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
  331. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
  332. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
  333. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
  334. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
  335. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
  336. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
  337. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
  338. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
  339. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
  340. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
  341. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
  342. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
  343. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
  344. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
  345. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
  346. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
  347. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
  348. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
  349. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
  350. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
  351. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
  352. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
  353. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
  354. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
  355. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
  356. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
  357. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
  358. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/runner.py +0 -0
  359. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/legacy/__init__.py +0 -0
  360. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/legacy/keras_quantization_facade.py +0 -0
  361. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/legacy/pytorch_quantization_facade.py +0 -0
  362. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/logger.py +0 -0
  363. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/__init__.py +0 -0
  364. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
  365. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
  366. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
  367. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
  368. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/runner.py +0 -0
  369. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/__init__.py +0 -0
  370. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/common/__init__.py +0 -0
  371. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/common/qat_config.py +0 -0
  372. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/__init__.py +0 -0
  373. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
  374. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
  375. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
  376. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
  377. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
  378. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
  379. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
  380. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
  381. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
  382. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
  383. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
  384. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
  385. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
  386. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
  387. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
  388. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
  389. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
  390. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
  391. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
  392. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
  393. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
  394. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
  395. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
  396. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
  397. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
  398. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
  399. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
  400. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
  401. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
  402. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +0 -0
  403. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
  404. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/quantization_format.py +0 -0
  405. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
  406. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
  407. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
  408. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
  409. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
  410. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
  411. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +0 -0
  412. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -0
  413. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
  414. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
  415. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
  416. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
  417. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +0 -0
  418. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -0
  419. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
  420. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +0 -0
  421. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -0
  422. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -0
  423. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
  424. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +0 -0
  425. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -0
  426. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -0
  427. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
  428. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -0
  429. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -0
  430. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -0
  431. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
  432. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
  433. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
  434. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
  435. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +0 -0
  436. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -0
  437. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -0
  438. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
  439. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
  440. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
  441. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
  442. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +0 -0
  443. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -0
  444. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -0
  445. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
  446. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
  447. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
  448. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
  449. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
  450. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
  451. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
  452. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
  453. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
  454. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
  455. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
  456. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
  457. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
  458. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
  459. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
  460. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
  461. {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mct-nightly
3
- Version: 1.10.0.20231101.post420
3
+ Version: 1.10.0.20231103.post353
4
4
  Summary: A Model Compression Toolkit for neural networks
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mct-nightly
3
- Version: 1.10.0.20231101.post420
3
+ Version: 1.10.0.20231103.post353
4
4
  Summary: A Model Compression Toolkit for neural networks
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -67,7 +67,6 @@ class FrameworkImplementation(ABC):
67
67
  raise NotImplemented(f'{self.__class__.__name__} have to implement the '
68
68
  f'framework\'s get_trace_hessian_calculator method.') # pragma: no cover
69
69
 
70
-
71
70
  @abstractmethod
72
71
  def to_numpy(self, tensor: Any) -> np.ndarray:
73
72
  """
@@ -387,21 +386,20 @@ class FrameworkImplementation(ABC):
387
386
 
388
387
 
389
388
  @abstractmethod
390
- def is_node_compatible_for_metric_outputs(self,
391
- node: BaseNode) -> bool:
389
+ def is_output_node_compatible_for_hessian_score_computation(self,
390
+ node: BaseNode) -> bool:
392
391
  """
393
- Checks and returns whether the given node is compatible as output for metric computation
394
- purposes and gradient-based weights calculation.
392
+ Checks and returns whether the given node is compatible as output for Hessian-based information computation.
395
393
 
396
394
  Args:
397
395
  node: A BaseNode object.
398
396
 
399
- Returns: Whether the node is compatible as output for metric computation or not.
397
+ Returns: Whether the node is compatible as output for Hessian-based information computation.
400
398
 
401
399
  """
402
400
 
403
401
  raise NotImplemented(f'{self.__class__.__name__} have to implement the '
404
- f'framework\'s is_node_compatible_for_metric_outputs method.') # pragma: no cover
402
+ f'framework\'s is_output_node_compatible_for_hessian_score_computation method.') # pragma: no cover
405
403
 
406
404
  @abstractmethod
407
405
  def get_node_mac_operations(self,
@@ -0,0 +1,34 @@
1
+ # Copyright 2023 Sony Semiconductor Israel, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ from typing import List
16
+ import numpy as np
17
+ from model_compression_toolkit.constants import EPS
18
+
19
+
20
+ def normalize_weights(hessian_approximations: List) -> np.ndarray:
21
+ """
22
+ Normalize Hessian information approximations by dividing the trace Hessian approximations value by the sum of all
23
+ other values.
24
+
25
+ Args:
26
+ hessian_approximations: Approximated average Hessian-based scores for each interest point.
27
+
28
+ Returns:
29
+ Normalized list of Hessian info approximations for each interest point.
30
+ """
31
+ scores_vec = np.asarray(hessian_approximations)
32
+
33
+ return scores_vec / (np.sum(scores_vec) + EPS)
34
+
@@ -47,9 +47,12 @@ class TraceHessianCalculator(ABC):
47
47
 
48
48
  """
49
49
  self.graph = graph
50
+
50
51
  for output_node in graph.get_outputs():
51
- if not fw_impl.is_node_compatible_for_metric_outputs(output_node.node):
52
- Logger.error(f"All graph outputs should support metric outputs, but node {output_node.node} was found with layer type {output_node.node.type}.")
52
+ if not fw_impl.is_output_node_compatible_for_hessian_score_computation(output_node.node):
53
+ Logger.error(f"All graph outputs should support Hessian computation, but node {output_node.node} "
54
+ f"was found with layer type {output_node.node.type}. "
55
+ f"Try to run MCT without Hessian info computation.")
53
56
 
54
57
  self.input_images = fw_impl.to_tensor(input_images)
55
58
  self.num_iterations_for_approximation = num_iterations_for_approximation
@@ -31,7 +31,6 @@ class MixedPrecisionQuantizationConfigV2:
31
31
  configuration_overwrite: List[int] = None,
32
32
  num_interest_points_factor: float = 1.0,
33
33
  use_grad_based_weights: bool = True,
34
- output_grad_factor: float = 0.1,
35
34
  norm_weights: bool = True,
36
35
  refine_mp_solution: bool = True,
37
36
  metric_normalization_threshold: float = 1e10):
@@ -46,8 +45,7 @@ class MixedPrecisionQuantizationConfigV2:
46
45
  num_of_images (int): Number of images to use to evaluate the sensitivity of a mixed-precision model comparing to the float model.
47
46
  configuration_overwrite (List[int]): A list of integers that enables overwrite of mixed precision with a predefined one.
48
47
  num_interest_points_factor (float): A multiplication factor between zero and one (represents percentage) to reduce the number of interest points used to calculate the distance metric.
49
- use_grad_based_weights (bool): Whether to use gradient-based weights for weighted average distance metric computation.
50
- output_grad_factor (float): A tuning parameter to be used for gradient-based weights.
48
+ use_grad_based_weights (bool): Whether to use Hessian-based scores for weighted average distance metric computation.
51
49
  norm_weights (bool): Whether to normalize the returned weights (to get values between 0 and 1).
52
50
  refine_mp_solution (bool): Whether to try to improve the final mixed-precision configuration using a greedy algorithm that searches layers to increase their bit-width, or not.
53
51
  metric_normalization_threshold (float): A threshold for checking the mixed precision distance metric values, In case of values larger than this threshold, the metric will be scaled to prevent numerical issues.
@@ -67,13 +65,8 @@ class MixedPrecisionQuantizationConfigV2:
67
65
  self.num_interest_points_factor = num_interest_points_factor
68
66
 
69
67
  self.use_grad_based_weights = use_grad_based_weights
70
- self.output_grad_factor = output_grad_factor
71
68
  self.norm_weights = norm_weights
72
69
 
73
- if use_grad_based_weights is True:
74
- Logger.info(f"Using gradient-based weights for mixed-precision distance metric with tuning factor "
75
- f"{output_grad_factor}")
76
-
77
70
  self.metric_normalization_threshold = metric_normalization_threshold
78
71
 
79
72
 
@@ -15,7 +15,7 @@
15
15
  import copy
16
16
 
17
17
  import numpy as np
18
- from typing import Callable, Any, List
18
+ from typing import Callable, Any, List, Tuple
19
19
 
20
20
  from model_compression_toolkit.constants import AXIS, HESSIAN_OUTPUT_ALPHA
21
21
  from model_compression_toolkit.core import FrameworkInfo, MixedPrecisionQuantizationConfigV2
@@ -82,22 +82,27 @@ class SensitivityEvaluation:
82
82
  f" an HessianInfoService object must be provided but is {hessian_info_service}")
83
83
  self.hessian_info_service = hessian_info_service
84
84
 
85
- # Get interest points for distance measurement and a list of sorted configurable nodes names
86
85
  self.sorted_configurable_nodes_names = graph.get_configurable_sorted_nodes_names()
86
+
87
+ # Get interest points and output points set for distance measurement and set other helper datasets
88
+ # We define a separate set of output nodes of the model for the purpose of sensitivity computation.
87
89
  self.interest_points = get_mp_interest_points(graph,
88
90
  fw_impl.count_node_for_mixed_precision_interest_points,
89
91
  quant_config.num_interest_points_factor)
90
92
 
91
- self.outputs_replacement_nodes = None
92
- self.output_nodes_indices = None
93
- if self.quant_config.use_grad_based_weights is True:
94
- # Getting output replacement (if needed) - if a model's output layer is not compatible for the task of
95
- # gradients computation then we find a predecessor layer which is compatible,
96
- # add it to the set of interest points and use it for the gradients' computation.
97
- # Note that we need to modify the set of interest points before building the models,
98
- # therefore, it is separated from the part where we compute the actual gradient weights.
99
- self.outputs_replacement_nodes = get_output_replacement_nodes(graph, fw_impl)
100
- self.output_nodes_indices = self._update_ips_with_outputs_replacements()
93
+ self.ips_distance_fns, self.ips_batch_axis = self._init_metric_points_lists(self.interest_points)
94
+
95
+ self.output_points = get_output_nodes_for_metric(graph)
96
+ self.out_ps_distance_fns, self.out_ps_batch_axis = self._init_metric_points_lists(self.output_points)
97
+
98
+ # Setting lists with relative position of the interest points
99
+ # and output points in the list of all mp model activation tensors
100
+ graph_sorted_nodes = self.graph.get_topo_sorted_nodes()
101
+ all_out_tensors_indices = [graph_sorted_nodes.index(n) for n in self.interest_points + self.output_points]
102
+ global_ipts_indices = [graph_sorted_nodes.index(n) for n in self.interest_points]
103
+ global_out_pts_indices = [graph_sorted_nodes.index(n) for n in self.output_points]
104
+ self.ips_act_indices = [all_out_tensors_indices.index(i) for i in global_ipts_indices]
105
+ self.out_ps_act_indices = [all_out_tensors_indices.index(i) for i in global_out_pts_indices]
101
106
 
102
107
  # Build a mixed-precision model which can be configured to use different bitwidth in different layers.
103
108
  # And a baseline model.
@@ -117,16 +122,35 @@ class SensitivityEvaluation:
117
122
  # Initiating baseline_tensors_list since it is not initiated in SensitivityEvaluationManager init.
118
123
  self._init_baseline_tensors_list()
119
124
 
120
- # Computing gradient-based weights for weighted average distance metric computation (only if requested),
125
+ # Computing Hessian-based scores for weighted average distance metric computation (only if requested),
121
126
  # and assigning distance_weighting method accordingly.
122
- self.interest_points_gradients = None
123
- if self.quant_config.use_grad_based_weights is True:
124
- assert self.outputs_replacement_nodes is not None and self.output_nodes_indices is not None, \
125
- f"{self.outputs_replacement_nodes} and {self.output_nodes_indices} " \
126
- f"should've been assigned before computing the gradient-based weights."
127
+ self.interest_points_hessians = None
128
+ if self.quant_config.use_grad_based_weights is True:
129
+ self.interest_points_hessians = self._compute_hessian_based_scores()
130
+ self.quant_config.distance_weighting_method = lambda d: self.interest_points_hessians
131
+
132
+ def _init_metric_points_lists(self, points: List[BaseNode]) -> Tuple[List[Callable], List[int]]:
133
+ """
134
+ Initiates required lists for future use when computing the sensitivity metric.
135
+ Each point on which the metric is computed uses a dedicated distance function based on its type.
136
+ In addition, all distance functions preform batch computation, so the batch axis is needed for each node.
137
+
138
+ Args:
139
+ points: The set of nodes in the graph for which we need to initiate the lists.
127
140
 
128
- self.interest_points_gradients = self._compute_gradient_based_weights()
129
- self.quant_config.distance_weighting_method = lambda d: self.interest_points_gradients
141
+ Returns: A lists with distance functions and a list batch axis for each node.
142
+
143
+ """
144
+ distance_fns_list = []
145
+ batch_axis_list = []
146
+ for n in points:
147
+ distance_fns_list.append(self.fw_impl.get_node_distance_fn(
148
+ layer_class=n.layer_class,
149
+ framework_attrs=n.framework_attr,
150
+ compute_distance_fn=self.quant_config.compute_distance_fn))
151
+ batch_axis_list.append(n.framework_attr.get(AXIS) if not isinstance(n, FunctionalNode)
152
+ else n.op_call_kwargs.get(AXIS))
153
+ return distance_fns_list, batch_axis_list
130
154
 
131
155
  def compute_metric(self,
132
156
  mp_model_configuration: List[int],
@@ -151,15 +175,16 @@ class SensitivityEvaluation:
151
175
  self._configure_bitwidths_model(mp_model_configuration,
152
176
  node_idx)
153
177
 
154
- # Compute the distance matrix
155
- distance_matrix = self._build_distance_matrix()
178
+ # Compute the distance metric
179
+ ipts_distances, out_pts_distances = self._compute_distance()
156
180
 
157
181
  # Configure MP model back to the same configuration as the baseline model if baseline provided
158
182
  if baseline_mp_configuration is not None:
159
183
  self._configure_bitwidths_model(baseline_mp_configuration,
160
184
  node_idx)
161
185
 
162
- return self._compute_mp_distance_measure(distance_matrix, self.quant_config.distance_weighting_method)
186
+ return self._compute_mp_distance_measure(ipts_distances, out_pts_distances,
187
+ self.quant_config.distance_weighting_method)
163
188
 
164
189
  def _init_baseline_tensors_list(self):
165
190
  """
@@ -188,21 +213,21 @@ class SensitivityEvaluation:
188
213
 
189
214
  model_mp, _, conf_node2layers = self.fw_impl.model_builder(evaluation_graph,
190
215
  mode=ModelBuilderMode.MIXEDPRECISION,
191
- append2output=self.interest_points,
216
+ append2output=self.interest_points + self.output_points,
192
217
  fw_info=self.fw_info)
193
218
 
194
219
  # Build a baseline model.
195
220
  baseline_model, _ = self.fw_impl.model_builder(evaluation_graph,
196
221
  mode=ModelBuilderMode.FLOAT,
197
- append2output=self.interest_points)
222
+ append2output=self.interest_points + self.output_points)
198
223
 
199
224
  return baseline_model, model_mp, conf_node2layers
200
225
 
201
- def _compute_gradient_based_weights(self) -> np.ndarray:
226
+ def _compute_hessian_based_scores(self) -> np.ndarray:
202
227
  """
203
- Compute gradient-based weights using trace Hessian approximations for each interest point.
228
+ Compute Hessian-based scores for each interest point.
204
229
 
205
- Returns: A vector of weights, one for each interest point,
230
+ Returns: A vector of scores, one for each interest point,
206
231
  to be used for the distance metric weighted average computation.
207
232
 
208
233
  """
@@ -239,9 +264,8 @@ class SensitivityEvaluation:
239
264
  approx_by_image_per_interest_point.append(compare_point_to_trace_hessian_approximations[target_node][image_idx][0])
240
265
 
241
266
  if self.quant_config.norm_weights:
242
- approx_by_image_per_interest_point = hessian_utils.normalize_weights(trace_hessian_approximations=approx_by_image_per_interest_point,
243
- outputs_indices=self.output_nodes_indices,
244
- alpha=HESSIAN_OUTPUT_ALPHA)
267
+ approx_by_image_per_interest_point = \
268
+ hessian_utils.normalize_weights(hessian_approximations=approx_by_image_per_interest_point)
245
269
 
246
270
  # Append the approximations for the current image to the main list
247
271
  approx_by_image.append(approx_by_image_per_interest_point)
@@ -299,47 +323,42 @@ class SensitivityEvaluation:
299
323
  for current_layer in layers_to_config:
300
324
  self.set_layer_to_bitwidth(current_layer, mp_model_configuration[node_idx_to_configure])
301
325
 
302
- def _compute_distance_matrix(self,
326
+ def _compute_points_distance(self,
303
327
  baseline_tensors: List[Any],
304
- mp_tensors: List[Any]):
328
+ mp_tensors: List[Any],
329
+ points_distance_fns: List[Callable],
330
+ points_batch_axis: List[int]):
305
331
  """
306
- Compute the distance between the MP model's outputs and the baseline model's outputs
332
+ Compute the distance on the given set of points outputs between the MP model and the baseline model
307
333
  for each image in the batch that was inferred.
334
+
308
335
  Args:
309
- baseline_tensors: Baseline model's output tensors.
310
- mp_tensors: MP model's output tensors.
336
+ baseline_tensors: Baseline model's output tensors of the given points.
337
+ mp_tensors: MP model's output tensors pf the given points.
338
+ points_distance_fns: A list with distance function to compute the distance between each given
339
+ point's output tensors.
340
+ points_batch_axis: A list with the matching batch axis of each given point's output tensors.
341
+
311
342
  Returns:
312
- A distance matrix that maps each node's index to the distance between this node's output
343
+ A distance vector that maps each node's index in the given nodes list to the distance between this node's output
313
344
  and the baseline model's output for all images that were inferred.
314
345
  """
315
346
 
316
- assert len(baseline_tensors) == len(self.interest_points)
317
- num_interest_points = len(baseline_tensors)
318
- num_samples = len(baseline_tensors[0])
319
- distance_matrix = np.ndarray((num_interest_points, num_samples))
320
-
321
- for i in range(num_interest_points):
322
- point_node = self.interest_points[i]
323
- point_distance_fn = \
324
- self.fw_impl.get_node_distance_fn(layer_class=point_node.layer_class,
325
- framework_attrs=point_node.framework_attr,
326
- compute_distance_fn=self.quant_config.compute_distance_fn)
347
+ distance_v = [fn(x, y, batch=True, axis=axis) for fn, x, y, axis
348
+ in zip(points_distance_fns, baseline_tensors, mp_tensors, points_batch_axis)]
327
349
 
328
- axis = point_node.framework_attr.get(AXIS) if not isinstance(point_node, FunctionalNode) \
329
- else point_node.op_call_kwargs.get(AXIS)
350
+ return np.asarray(distance_v)
330
351
 
331
- distance_matrix[i] = point_distance_fn(baseline_tensors[i], mp_tensors[i], batch=True, axis=axis)
332
-
333
- return distance_matrix
334
-
335
- def _build_distance_matrix(self):
352
+ def _compute_distance(self) -> Tuple[np.ndarray, np.ndarray]:
336
353
  """
337
- Builds a matrix that contains the distances between the baseline and MP models for each interest point.
338
- Returns: A distance matrix.
354
+ Computing the interest points distance and the output points distance, and using them to build a
355
+ unified distance vector.
356
+
357
+ Returns: A distance vector.
339
358
  """
340
- # List of distance matrices. We create a distance matrix for each sample from the representative_data_gen
341
- # and merge all of them eventually.
342
- distance_matrices = []
359
+
360
+ ipts_per_batch_distance = []
361
+ out_pts_per_batch_distance = []
343
362
 
344
363
  # Compute the distance matrix for num_of_images images.
345
364
  for images, baseline_tensors in zip(self.images_batches, self.baseline_tensors_list):
@@ -347,32 +366,58 @@ class SensitivityEvaluation:
347
366
  mp_tensors = self.fw_impl.sensitivity_eval_inference(self.model_mp, images)
348
367
  mp_tensors = self.fw_impl.to_numpy(mp_tensors)
349
368
 
350
- # Build distance matrix: similarity between the baseline model to the float model
369
+ # Compute distance: similarity between the baseline model to the float model
351
370
  # in every interest point for every image in the batch.
352
- distance_matrices.append(self._compute_distance_matrix(baseline_tensors, mp_tensors))
371
+ ips_distance = self._compute_points_distance([baseline_tensors[i] for i in self.ips_act_indices],
372
+ [mp_tensors[i] for i in self.ips_act_indices],
373
+ self.ips_distance_fns,
374
+ self.ips_batch_axis)
375
+ outputs_distance = self._compute_points_distance([baseline_tensors[i] for i in self.out_ps_act_indices],
376
+ [mp_tensors[i] for i in self.out_ps_act_indices],
377
+ self.out_ps_distance_fns,
378
+ self.out_ps_batch_axis)
379
+
380
+ # Extending the dimensions for the concatenation at the end in case we need to
381
+ ips_distance = ips_distance if len(ips_distance.shape) > 1 else ips_distance[:, None]
382
+ outputs_distance = outputs_distance if len(outputs_distance.shape) > 1 else outputs_distance[:, None]
383
+ ipts_per_batch_distance.append(ips_distance)
384
+ out_pts_per_batch_distance.append(outputs_distance)
353
385
 
354
386
  # Merge all distance matrices into a single distance matrix.
355
- distance_matrix = np.concatenate(distance_matrices, axis=1)
387
+ ipts_distances = np.concatenate(ipts_per_batch_distance, axis=1)
388
+ out_pts_distances = np.concatenate(out_pts_per_batch_distance, axis=1)
356
389
 
357
- return distance_matrix
390
+ return ipts_distances, out_pts_distances
358
391
 
359
392
  @staticmethod
360
- def _compute_mp_distance_measure(distance_matrix: np.ndarray, metrics_weights_fn: Callable) -> float:
393
+ def _compute_mp_distance_measure(ipts_distances: np.ndarray,
394
+ out_pts_distances: np.ndarray,
395
+ metrics_weights_fn: Callable) -> float:
361
396
  """
362
397
  Computes the final distance value out of a distance matrix.
363
398
 
364
399
  Args:
365
- distance_matrix: A matrix that contains the distances between the baseline and MP models
400
+ ipts_distances: A matrix that contains the distances between the baseline and MP models
366
401
  for each interest point.
367
- metrics_weights_fn:
402
+ out_pts_distances: A matrix that contains the distances between the baseline and MP models
403
+ for each output point.
404
+ metrics_weights_fn: A callable that produces the scores to compute weighted distance for interest points.
368
405
 
369
406
  Returns: Distance value.
370
407
  """
371
- # Compute the distance between the baseline model's outputs and the MP model's outputs.
372
- # The distance is the mean of distances over all images in the batch that was inferred.
373
- mean_distance_per_layer = distance_matrix.mean(axis=1)
374
- # Use weights such that every layer's distance is weighted differently (possibly).
375
- return np.average(mean_distance_per_layer, weights=metrics_weights_fn(distance_matrix))
408
+ mean_ipts_distance = 0
409
+ if len(ipts_distances) > 0:
410
+ mean_distance_per_layer = ipts_distances.mean(axis=1)
411
+
412
+ # Use weights such that every layer's distance is weighted differently (possibly).
413
+ mean_ipts_distance = np.average(mean_distance_per_layer, weights=metrics_weights_fn(ipts_distances))
414
+
415
+ mean_output_distance = 0
416
+ if len(out_pts_distances) > 0:
417
+ mean_distance_per_output = out_pts_distances.mean(axis=1)
418
+ mean_output_distance = np.average(mean_distance_per_output)
419
+
420
+ return mean_output_distance + mean_ipts_distance
376
421
 
377
422
  def _get_images_batches(self, num_of_images: int) -> List[Any]:
378
423
  """
@@ -406,37 +451,14 @@ class SensitivityEvaluation:
406
451
  f'only {samples_count} were generated')
407
452
  return images_batches
408
453
 
409
- def _update_ips_with_outputs_replacements(self):
410
- """
411
- Updates the list of interest points with the set of pre-calculated replacement outputs.
412
- Also, returns the indices of all output nodes (original, replacements and nodes in between them) in a
413
- topological sorted interest points list (for later use in gradients computation and normalization).
414
-
415
- Returns: A list of indices of the output nodes in the sorted interest points list.
416
-
417
- """
418
-
419
- assert self.outputs_replacement_nodes is not None, \
420
- "Trying to update interest points list with new output nodes but outputs_replacement_nodes list is None."
421
-
422
- replacement_outputs_to_ip = [r_node for r_node in self.outputs_replacement_nodes if
423
- r_node not in self.interest_points]
424
- updated_interest_points = self.interest_points + replacement_outputs_to_ip
425
-
426
- # Re-sort interest points in a topological order according to the graph's sort
427
- self.interest_points = [n for n in self.graph.get_topo_sorted_nodes() if n in updated_interest_points]
428
-
429
- output_indices = [self.interest_points.index(n.node) for n in self.graph.get_outputs()]
430
- replacement_indices = [self.interest_points.index(n) for n in self.outputs_replacement_nodes]
431
- return list(set(output_indices + replacement_indices))
432
-
433
454
 
434
455
  def get_mp_interest_points(graph: Graph,
435
456
  interest_points_classifier: Callable,
436
457
  num_ip_factor: float) -> List[BaseNode]:
437
458
  """
438
459
  Gets a list of interest points for the mixed precision metric computation.
439
- The list is constructed from a filtered set of the convolutions nodes in the graph.
460
+ The list is constructed from a filtered set of nodes in the graph.
461
+ Note that the output layers are separated from the interest point set for metric computation purposes.
440
462
 
441
463
  Args:
442
464
  graph: Graph to search for its MP configuration.
@@ -455,38 +477,26 @@ def get_mp_interest_points(graph: Graph,
455
477
  # We add output layers of the model to interest points
456
478
  # in order to consider the model's output in the distance metric computation (and also to make sure
457
479
  # all configurable layers are included in the configured mp model for metric computation purposes)
458
- output_nodes = [n.node for n in graph.get_outputs() if n.node not in interest_points_nodes and
459
- (n.node.is_weights_quantization_enabled() or
460
- n.node.is_activation_quantization_enabled())]
461
- interest_points = interest_points_nodes + output_nodes
480
+ output_nodes = get_output_nodes_for_metric(graph)
481
+
482
+ interest_points = [n for n in interest_points_nodes if n not in output_nodes]
462
483
 
463
484
  return interest_points
464
485
 
465
486
 
466
- def get_output_replacement_nodes(graph: Graph,
467
- fw_impl: Any) -> List[BaseNode]:
487
+ def get_output_nodes_for_metric(graph: Graph) -> List[BaseNode]:
468
488
  """
469
- If a model's output node is not compatible for the task of gradients computation we need to find a predecessor
470
- node in the model's graph representation which is compatible and add it to the set of interest points and use it
471
- for the gradients' computation. This method searches for this predecessor node for each output of the model.
489
+ Returns a list of output nodes that are also quantized (either weights or activation)
490
+ to be used as a set of output points in the distance metric computation.
472
491
 
473
492
  Args:
474
- graph: Graph to search for replacement output nodes.
475
- fw_impl: FrameworkImplementation object with a specific framework methods implementation.
493
+ graph: Graph to search for its MP configuration.
476
494
 
477
- Returns: A list of output replacement nodes.
495
+ Returns: A list of output nodes.
478
496
 
479
497
  """
480
- replacement_outputs = []
481
- for n in graph.get_outputs():
482
- prev_node = n.node
483
- while not fw_impl.is_node_compatible_for_metric_outputs(prev_node):
484
- prev_node = graph.get_prev_nodes(n.node)
485
- assert len(prev_node) == 1, "A none MP compatible output node has multiple inputs, " \
486
- "which is incompatible for metric computation."
487
- prev_node = prev_node[0]
488
- replacement_outputs.append(prev_node)
489
- return replacement_outputs
498
+ return [n.node for n in graph.get_outputs() if (n.node.is_weights_quantization_enabled() or
499
+ n.node.is_activation_quantization_enabled())]
490
500
 
491
501
 
492
502
  def bound_num_interest_points(sorted_ip_list: List[BaseNode], num_ip_factor: float) -> List[BaseNode]:
@@ -12,6 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
+ from tqdm import tqdm
15
16
  from typing import List
16
17
 
17
18
  from model_compression_toolkit.core.common.framework_implementation import FrameworkImplementation
@@ -21,6 +22,7 @@ from model_compression_toolkit.core.common.quantization.quantization_params_gene
21
22
  import get_activations_qparams
22
23
  from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_weights_computation import \
23
24
  get_weights_qparams, get_channels_axis
25
+ from model_compression_toolkit.logger import Logger
24
26
 
25
27
 
26
28
  def calculate_quantization_params(graph: Graph,
@@ -46,10 +48,14 @@ def calculate_quantization_params(graph: Graph,
46
48
 
47
49
  """
48
50
 
51
+ Logger.info(f"Running quantization parameters search. "
52
+ f"This process might take some time, "
53
+ f"depending on the model size and the selected quantization methods.\n")
54
+
49
55
  # Create a list of nodes to compute their thresholds
50
56
  nodes_list: List[BaseNode] = nodes if specific_nodes else graph.nodes()
51
57
 
52
- for n in nodes_list: # iterate only nodes that we should compute their thresholds
58
+ for n in tqdm(nodes_list, "Calculating quantization params"): # iterate only nodes that we should compute their thresholds
53
59
  for candidate_qc in n.candidates_quantization_cfg:
54
60
  if n.is_weights_quantization_enabled():
55
61
  # If node's weights should be quantized, we compute its weights' quantization parameters
@@ -65,7 +65,7 @@ class ActivationTraceHessianCalculatorKeras(TraceHessianCalculatorKeras):
65
65
  List[float]: Approximated trace of the Hessian for an interest point.
66
66
  """
67
67
  if self.hessian_request.granularity == HessianInfoGranularity.PER_TENSOR:
68
- output_list = self._get_model_output_replacement()
68
+ output_list = [n.node for n in self.graph.get_outputs()]
69
69
 
70
70
  # Record operations for automatic differentiation
71
71
  with tf.GradientTape(persistent=True, watch_accessed_variables=False) as g:
@@ -145,51 +145,6 @@ class ActivationTraceHessianCalculatorKeras(TraceHessianCalculatorKeras):
145
145
  else:
146
146
  Logger.error(f"{self.hessian_request.granularity} is not supported for Keras activation hessian's trace approx calculator")
147
147
 
148
-
149
- def _update_ips_with_outputs_replacements(self,
150
- outputs_replacement_nodes: List[BaseNode],
151
- interest_points: List[BaseNode]):
152
- """
153
- Updates the list of interest points with the set of pre-calculated replacement outputs.
154
- Also, returns the indices of all output nodes (original, replacements and nodes in between them) in a
155
- topological sorted interest points list (for later use in gradients computation and normalization).
156
-
157
- Returns: A list of indices of the output nodes in the sorted interest points list.
158
-
159
- """
160
-
161
- replacement_outputs_to_ip = [r_node for r_node in outputs_replacement_nodes if
162
- r_node not in interest_points]
163
- updated_interest_points = interest_points + replacement_outputs_to_ip
164
-
165
- # Re-sort interest points in a topological order according to the graph's sort
166
- interest_points = [n for n in self.graph.get_topo_sorted_nodes() if n in updated_interest_points]
167
-
168
- output_indices = [interest_points.index(n.node) for n in self.graph.get_outputs()]
169
- replacement_indices = [interest_points.index(n) for n in outputs_replacement_nodes]
170
- return list(set(output_indices + replacement_indices))
171
-
172
- def _get_model_output_replacement(self) -> List[str]:
173
- """
174
- If a model's output node is not compatible for the task of gradients computation we need to find a predecessor
175
- node in the model's graph representation which is compatible and use it for the gradients' computation.
176
- This method searches for this predecessor node for each output of the model.
177
-
178
- Returns: A list of output replacement nodes.
179
-
180
- """
181
-
182
- replacement_outputs = []
183
- for n in self.graph.get_outputs():
184
- prev_node = n.node
185
- while not self.fw_impl.is_node_compatible_for_metric_outputs(prev_node):
186
- prev_node = self.graph.get_prev_nodes(prev_node)
187
- assert len(prev_node) == 1, "A none compatible output node has multiple inputs, " \
188
- "which is incompatible for metric computation."
189
- prev_node = prev_node[0]
190
- replacement_outputs.append(prev_node)
191
- return replacement_outputs
192
-
193
148
  def _get_model_outputs_for_single_image(self,
194
149
  output_list: List[str],
195
150
  gradient_tape: tf.GradientTape) -> Tuple[List[tf.Tensor], List[tf.Tensor]]: