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.
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/PKG-INFO +1 -1
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/framework_implementation.py +5 -7
- mct-nightly-1.10.0.20231103.post353/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +34 -0
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/keras_implementation.py +6 -8
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +5 -6
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_training.py +1 -23
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/setup.cfg +1 -1
- mct-nightly-1.10.0.20231101.post420/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -75
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/LICENSE.md +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/README.md +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/SOURCES.txt +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/constants.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/data_loader.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/defaultdict.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/similarity_analyzer.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/exporter.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/graph_prep_runner.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/constants.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/common.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/core/runner.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/gptq/runner.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/legacy/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/legacy/keras_quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/legacy/pytorch_quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {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
- {mct-nightly-1.10.0.20231101.post420 → mct-nightly-1.10.0.20231103.post353}/setup.py +0 -0
|
@@ -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
|
|
391
|
-
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
52
|
-
Logger.error(f"All graph outputs should support
|
|
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
|
|
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.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
|
125
|
+
# Computing Hessian-based scores for weighted average distance metric computation (only if requested),
|
|
121
126
|
# and assigning distance_weighting method accordingly.
|
|
122
|
-
self.
|
|
123
|
-
if self.quant_config.use_grad_based_weights
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
129
|
-
|
|
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
|
|
155
|
-
|
|
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(
|
|
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
|
|
226
|
+
def _compute_hessian_based_scores(self) -> np.ndarray:
|
|
202
227
|
"""
|
|
203
|
-
Compute
|
|
228
|
+
Compute Hessian-based scores for each interest point.
|
|
204
229
|
|
|
205
|
-
Returns: A vector of
|
|
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 =
|
|
243
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
317
|
-
|
|
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
|
-
|
|
329
|
-
else point_node.op_call_kwargs.get(AXIS)
|
|
350
|
+
return np.asarray(distance_v)
|
|
330
351
|
|
|
331
|
-
|
|
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
|
-
|
|
338
|
-
|
|
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
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
390
|
+
return ipts_distances, out_pts_distances
|
|
358
391
|
|
|
359
392
|
@staticmethod
|
|
360
|
-
def _compute_mp_distance_measure(
|
|
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
|
-
|
|
400
|
+
ipts_distances: A matrix that contains the distances between the baseline and MP models
|
|
366
401
|
for each interest point.
|
|
367
|
-
|
|
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
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
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
|
|
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 =
|
|
459
|
-
|
|
460
|
-
|
|
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
|
|
467
|
-
fw_impl: Any) -> List[BaseNode]:
|
|
487
|
+
def get_output_nodes_for_metric(graph: Graph) -> List[BaseNode]:
|
|
468
488
|
"""
|
|
469
|
-
|
|
470
|
-
|
|
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
|
|
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
|
|
495
|
+
Returns: A list of output nodes.
|
|
478
496
|
|
|
479
497
|
"""
|
|
480
|
-
|
|
481
|
-
|
|
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.
|
|
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]]:
|