mct-nightly 2.1.0.20240613.456__tar.gz → 2.1.0.20240615.432__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-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/PKG-INFO +1 -1
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/__init__.py +1 -1
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +9 -7
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +6 -2
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +40 -1
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +76 -61
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +61 -55
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/LICENSE.md +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/README.md +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/SOURCES.txt +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/base_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/base_node.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/functional_node.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization_data.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_aggregation_methods.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_functions_mapping.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_methods.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/network_editors/node_filters.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/importance_metrics/base_importance_metric.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/importance_metrics/importance_metric_factory.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/importance_metrics/lfh_importance_metric.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/mask/per_channel_mask.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/mask/per_simd_group_mask.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/similarity_analyzer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/graph_prep_runner.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/keras_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/keras_node_prior_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/common.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/node_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_batch_norm.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/transform_function_call_method.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/pruning/pruning_pytorch_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/quantization_prep_runner.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/core/runner.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/defaultdict.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/quantization_format.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/keras/mctq_keras_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/get_inferable_quantizers.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/gptq/runner.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/metadata.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/pruning/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/pruning/pytorch/pruning_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/setup.cfg +0 -0
- {mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/setup.py +0 -0
@@ -27,4 +27,4 @@ from model_compression_toolkit import data_generation
|
|
27
27
|
from model_compression_toolkit import pruning
|
28
28
|
from model_compression_toolkit.trainable_infrastructure.keras.load_model import keras_load_quantized_model
|
29
29
|
|
30
|
-
__version__ = "2.1.0.
|
30
|
+
__version__ = "2.1.0.20240615.000432"
|
@@ -12,7 +12,6 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
from collections.abc import Iterable
|
16
15
|
|
17
16
|
import numpy as np
|
18
17
|
from functools import partial
|
@@ -189,6 +188,10 @@ class HessianInfoService:
|
|
189
188
|
images, next_iter_remain_samples = representative_dataset_gen(num_hessian_samples=num_hessian_samples,
|
190
189
|
last_iter_remain_samples=last_iter_remain_samples)
|
191
190
|
|
191
|
+
# Compute and store the computed approximation in the saved info
|
192
|
+
topo_sorted_nodes_names = [x.name for x in self.graph.get_topo_sorted_nodes()]
|
193
|
+
trace_hessian_request.target_nodes.sort(key=lambda x: topo_sorted_nodes_names.index(x.name))
|
194
|
+
|
192
195
|
# Get the framework-specific calculator for trace Hessian approximation
|
193
196
|
fw_hessian_calculator = self.fw_impl.get_trace_hessian_calculator(graph=self.graph,
|
194
197
|
input_images=images,
|
@@ -197,12 +200,7 @@ class HessianInfoService:
|
|
197
200
|
|
198
201
|
trace_hessian = fw_hessian_calculator.compute()
|
199
202
|
|
200
|
-
|
201
|
-
topo_sorted_nodes_names = [x.name for x in self.graph.get_topo_sorted_nodes()]
|
202
|
-
sorted_target_nodes = sorted(trace_hessian_request.target_nodes,
|
203
|
-
key=lambda x: topo_sorted_nodes_names.index(x.name))
|
204
|
-
|
205
|
-
for node, hessian in zip(sorted_target_nodes, trace_hessian):
|
203
|
+
for node, hessian in zip(trace_hessian_request.target_nodes, trace_hessian):
|
206
204
|
single_node_request = self._construct_single_node_request(trace_hessian_request.mode,
|
207
205
|
trace_hessian_request.granularity,
|
208
206
|
node)
|
@@ -246,6 +244,10 @@ class HessianInfoService:
|
|
246
244
|
The inner list length dependent on the granularity (1 for per-tensor,
|
247
245
|
OC for per-output-channel when the requested node has OC output-channels, etc.)
|
248
246
|
"""
|
247
|
+
|
248
|
+
if len(trace_hessian_request.target_nodes) == 0:
|
249
|
+
return []
|
250
|
+
|
249
251
|
if required_size == 0:
|
250
252
|
return [[] for _ in trace_hessian_request.target_nodes]
|
251
253
|
|
@@ -19,6 +19,7 @@ import model_compression_toolkit.core.common.quantization.quantization_config as
|
|
19
19
|
from model_compression_toolkit.core.common.hessian import TraceHessianRequest, HessianMode, HessianInfoGranularity, \
|
20
20
|
HessianInfoService
|
21
21
|
from model_compression_toolkit.core.common.similarity_analyzer import compute_mse, compute_mae, compute_lp_norm
|
22
|
+
from model_compression_toolkit.logger import Logger
|
22
23
|
from model_compression_toolkit.target_platform_capabilities.target_platform import QuantizationMethod
|
23
24
|
from model_compression_toolkit.constants import FLOAT_32, NUM_QPARAM_HESSIAN_SAMPLES
|
24
25
|
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import uniform_quantize_tensor, \
|
@@ -376,7 +377,7 @@ def _get_sliced_histogram(bins: np.ndarray,
|
|
376
377
|
|
377
378
|
def _compute_hessian_for_hmse(node,
|
378
379
|
hessian_info_service: HessianInfoService,
|
379
|
-
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> List[np.ndarray]:
|
380
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> List[List[np.ndarray]]:
|
380
381
|
"""
|
381
382
|
Compute and retrieve Hessian-based scores for using during HMSE error computation.
|
382
383
|
|
@@ -476,7 +477,10 @@ def get_threshold_selection_tensor_error_function(quantization_method: Quantizat
|
|
476
477
|
|
477
478
|
if quant_error_method == qc.QuantizationErrorMethod.HMSE:
|
478
479
|
node_hessian_scores = _compute_hessian_for_hmse(node, hessian_info_service, num_hessian_samples)
|
479
|
-
|
480
|
+
if len(node_hessian_scores) != 1:
|
481
|
+
Logger.critical(f"Expecting single node Hessian score request to return a list of length 1, but got a list "
|
482
|
+
f"of length {len(node_hessian_scores)}.")
|
483
|
+
node_hessian_scores = np.sqrt(np.mean(node_hessian_scores[0], axis=0))
|
480
484
|
|
481
485
|
return lambda x, y, threshold: _hmse_error_function_wrapper(x, y, norm=norm, axis=axis,
|
482
486
|
hessian_scores=node_hessian_scores)
|
@@ -20,7 +20,8 @@ from typing import List
|
|
20
20
|
from model_compression_toolkit.constants import NUM_QPARAM_HESSIAN_SAMPLES
|
21
21
|
from model_compression_toolkit.core import QuantizationErrorMethod
|
22
22
|
from model_compression_toolkit.core.common import Graph, BaseNode
|
23
|
-
from model_compression_toolkit.core.common.hessian import HessianInfoService
|
23
|
+
from model_compression_toolkit.core.common.hessian import HessianInfoService, TraceHessianRequest, HessianMode, \
|
24
|
+
HessianInfoGranularity
|
24
25
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_activations_computation \
|
25
26
|
import get_activations_qparams
|
26
27
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.qparams_weights_computation import \
|
@@ -28,6 +29,31 @@ from model_compression_toolkit.core.common.quantization.quantization_params_gene
|
|
28
29
|
from model_compression_toolkit.logger import Logger
|
29
30
|
|
30
31
|
|
32
|
+
def _collect_nodes_for_hmse(nodes_list: List[BaseNode], graph: Graph) -> List[BaseNode]:
|
33
|
+
"""
|
34
|
+
Collects nodes that are compatiable for parameters selection search using HMSE,
|
35
|
+
that is, have a kernel attribute that is configured for HMSE error method.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
nodes_list: A list of nodes to search quantization parameters for.
|
39
|
+
graph: Graph to compute its nodes' quantization parameters..
|
40
|
+
|
41
|
+
Returns: A (possibly empty) list of nodes.
|
42
|
+
|
43
|
+
"""
|
44
|
+
hmse_nodes = []
|
45
|
+
for n in nodes_list:
|
46
|
+
kernel_attr_name = graph.fw_info.get_kernel_op_attributes(n.type)
|
47
|
+
kernel_attr_name = None if kernel_attr_name is None or len(kernel_attr_name) == 0 else kernel_attr_name[0]
|
48
|
+
|
49
|
+
if kernel_attr_name is not None and n.is_weights_quantization_enabled(kernel_attr_name) and \
|
50
|
+
all([c.weights_quantization_cfg.get_attr_config(kernel_attr_name).weights_error_method ==
|
51
|
+
QuantizationErrorMethod.HMSE for c in n.candidates_quantization_cfg]):
|
52
|
+
hmse_nodes.append(n)
|
53
|
+
|
54
|
+
return hmse_nodes
|
55
|
+
|
56
|
+
|
31
57
|
def calculate_quantization_params(graph: Graph,
|
32
58
|
nodes: List[BaseNode] = [],
|
33
59
|
specific_nodes: bool = False,
|
@@ -58,6 +84,17 @@ def calculate_quantization_params(graph: Graph,
|
|
58
84
|
# Create a list of nodes to compute their thresholds
|
59
85
|
nodes_list: List[BaseNode] = nodes if specific_nodes else graph.nodes()
|
60
86
|
|
87
|
+
# Collecting nodes that are configured to search weights quantization parameters using HMSE optimization
|
88
|
+
# and computing required Hessian information to be used for HMSE parameters selection.
|
89
|
+
# The Hessian scores are computed and stored in the hessian_info_service object.
|
90
|
+
nodes_for_hmse = _collect_nodes_for_hmse(nodes_list, graph)
|
91
|
+
if len(nodes_for_hmse) > 0:
|
92
|
+
hessian_info_service.fetch_hessian(TraceHessianRequest(mode=HessianMode.WEIGHTS,
|
93
|
+
granularity=HessianInfoGranularity.PER_ELEMENT,
|
94
|
+
target_nodes=nodes_for_hmse),
|
95
|
+
required_size=num_hessian_samples,
|
96
|
+
batch_size=1)
|
97
|
+
|
61
98
|
for n in tqdm(nodes_list, "Calculating quantization parameters"): # iterate only nodes that we should compute their thresholds
|
62
99
|
for candidate_qc in n.candidates_quantization_cfg:
|
63
100
|
for attr in n.get_node_weights_attributes():
|
@@ -73,6 +110,8 @@ def calculate_quantization_params(graph: Graph,
|
|
73
110
|
mod_attr_cfg = attr_cfg
|
74
111
|
|
75
112
|
if attr_cfg.weights_error_method == QuantizationErrorMethod.HMSE:
|
113
|
+
# Although we collected nodes for HMSE before running the loop, we keep this verification to
|
114
|
+
# notify the user in case of HMSE configured for node that is not compatible for this method
|
76
115
|
kernel_attr_name = graph.fw_info.get_kernel_op_attributes(n.type)
|
77
116
|
if len(kernel_attr_name) > 0:
|
78
117
|
kernel_attr_name = kernel_attr_name[0]
|
@@ -15,9 +15,10 @@
|
|
15
15
|
|
16
16
|
import numpy as np
|
17
17
|
import tensorflow as tf
|
18
|
+
from tqdm import tqdm
|
18
19
|
from typing import List
|
19
20
|
|
20
|
-
from model_compression_toolkit.constants import HESSIAN_NUM_ITERATIONS, MIN_HESSIAN_ITER, HESSIAN_COMP_TOLERANCE
|
21
|
+
from model_compression_toolkit.constants import HESSIAN_NUM_ITERATIONS, MIN_HESSIAN_ITER, HESSIAN_COMP_TOLERANCE
|
21
22
|
from model_compression_toolkit.core.common import Graph
|
22
23
|
from model_compression_toolkit.core.common.hessian import TraceHessianRequest, HessianInfoGranularity
|
23
24
|
from model_compression_toolkit.core.keras.back2framework.float_model_builder import FloatKerasModelBuilder
|
@@ -47,11 +48,6 @@ class WeightsTraceHessianCalculatorKeras(TraceHessianCalculatorKeras):
|
|
47
48
|
num_iterations_for_approximation: Number of iterations to use when approximating the Hessian trace.
|
48
49
|
"""
|
49
50
|
|
50
|
-
if len(trace_hessian_request.target_nodes) > 1: # pragma: no cover
|
51
|
-
Logger.critical(f"Weights Hessian approximation is currently supported only for a single target node,"
|
52
|
-
f" but the provided request contains the following target nodes: "
|
53
|
-
f"{trace_hessian_request.target_nodes}.")
|
54
|
-
|
55
51
|
super(WeightsTraceHessianCalculatorKeras, self).__init__(graph=graph,
|
56
52
|
input_images=input_images,
|
57
53
|
fw_impl=fw_impl,
|
@@ -73,35 +69,12 @@ class WeightsTraceHessianCalculatorKeras(TraceHessianCalculatorKeras):
|
|
73
69
|
The function returns a list for compatibility reasons.
|
74
70
|
|
75
71
|
"""
|
76
|
-
# Check if the target node's layer type is supported.
|
77
|
-
# We assume that weights Hessian computation is done only for a single node at each request.
|
78
|
-
target_node = self.hessian_request.target_nodes[0]
|
79
|
-
if not DEFAULT_KERAS_INFO.is_kernel_op(target_node.type):
|
80
|
-
Logger.critical(f"Hessian information with respect to weights is not supported for "
|
81
|
-
f"{target_node.type} layers.") # pragma: no cover
|
82
72
|
|
83
73
|
# Construct the Keras float model for inference
|
84
74
|
model, _ = FloatKerasModelBuilder(graph=self.graph).build_model()
|
85
75
|
|
86
|
-
# Get the weight attributes for the target node type
|
87
|
-
weight_attributes = DEFAULT_KERAS_INFO.get_kernel_op_attributes(target_node.type)
|
88
|
-
|
89
|
-
# Get the weight tensor for the target node
|
90
|
-
if len(weight_attributes) != 1: # pragma: no cover
|
91
|
-
Logger.critical(f"Hessian-based scoring with respect to weights is currently supported only for nodes with "
|
92
|
-
f"a single weight attribute. Found {len(weight_attributes)} attributes.")
|
93
|
-
|
94
|
-
weight_tensor = getattr(model.get_layer(target_node.name), weight_attributes[0])
|
95
|
-
|
96
|
-
# Get the output channel index (needed for HessianInfoGranularity.PER_OUTPUT_CHANNEL case)
|
97
|
-
output_channel_axis, _ = DEFAULT_KERAS_INFO.kernel_channels_mapping.get(target_node.type)
|
98
|
-
|
99
|
-
# Get number of scores that should be calculated by the granularity.
|
100
|
-
num_of_scores = self._get_num_scores_by_granularity(weight_tensor,
|
101
|
-
output_channel_axis)
|
102
|
-
|
103
76
|
# Initiate a gradient tape for automatic differentiation
|
104
|
-
with tf.GradientTape(persistent=True) as tape:
|
77
|
+
with (tf.GradientTape(persistent=True) as tape):
|
105
78
|
# Perform a forward pass (inference) to get the output, while watching
|
106
79
|
# the input tensor for gradient computation
|
107
80
|
tape.watch(self.input_images)
|
@@ -110,55 +83,97 @@ class WeightsTraceHessianCalculatorKeras(TraceHessianCalculatorKeras):
|
|
110
83
|
# Combine outputs if the model returns multiple output tensors
|
111
84
|
output = self._concat_tensors(outputs)
|
112
85
|
|
113
|
-
|
114
|
-
|
86
|
+
ipts_hessian_trace_approx = [tf.Variable([0.0], dtype=tf.float32, trainable=True)
|
87
|
+
for _ in range(len(self.hessian_request.target_nodes))]
|
88
|
+
|
89
|
+
prev_mean_results = None
|
90
|
+
tensors_original_shape = []
|
91
|
+
for j in tqdm(range(self.num_iterations_for_approximation)): # Approximation iterations
|
115
92
|
# Getting a random vector with normal distribution and the same shape as the model output
|
116
93
|
v = tf.random.normal(shape=output.shape)
|
117
94
|
f_v = tf.reduce_sum(v * output)
|
118
95
|
|
119
|
-
#
|
96
|
+
for i, ipt_node in enumerate(self.hessian_request.target_nodes): # Per Interest point weights tensor
|
97
|
+
|
98
|
+
# Check if the target node's layer type is supported.
|
99
|
+
if not DEFAULT_KERAS_INFO.is_kernel_op(ipt_node.type):
|
100
|
+
Logger.critical(f"Hessian information with respect to weights is not supported for "
|
101
|
+
f"{ipt_node.type} layers.") # pragma: no cover
|
102
|
+
|
103
|
+
# Get the weight attributes for the target node type
|
104
|
+
weight_attributes = DEFAULT_KERAS_INFO.get_kernel_op_attributes(ipt_node.type)
|
105
|
+
|
106
|
+
# Get the weight tensor for the target node
|
107
|
+
if len(weight_attributes) != 1: # pragma: no cover
|
108
|
+
Logger.critical(
|
109
|
+
f"Hessian-based scoring with respect to weights is currently supported only for nodes with "
|
110
|
+
f"a single weight attribute. Found {len(weight_attributes)} attributes.")
|
111
|
+
|
112
|
+
weight_tensor = getattr(model.get_layer(ipt_node.name), weight_attributes[0])
|
113
|
+
|
114
|
+
if j == 0:
|
115
|
+
# On the first iteration we store the weight_tensor shape for later reshaping the results
|
116
|
+
# back if necessary
|
117
|
+
tensors_original_shape.append(weight_tensor.shape)
|
118
|
+
|
119
|
+
# Get the output channel index (needed for HessianInfoGranularity.PER_OUTPUT_CHANNEL case)
|
120
|
+
output_channel_axis, _ = DEFAULT_KERAS_INFO.kernel_channels_mapping.get(ipt_node.type)
|
121
|
+
|
122
|
+
# Get number of scores that should be calculated by the granularity.
|
123
|
+
num_of_scores = self._get_num_scores_by_granularity(weight_tensor,
|
124
|
+
output_channel_axis)
|
125
|
+
|
126
|
+
# Stop recording operations for automatic differentiation
|
127
|
+
with tape.stop_recording():
|
128
|
+
# Compute gradients of f_v with respect to the weights
|
129
|
+
gradients = tape.gradient(f_v, weight_tensor)
|
130
|
+
gradients = self._reshape_gradients(gradients,
|
131
|
+
output_channel_axis,
|
132
|
+
num_of_scores)
|
133
|
+
|
134
|
+
approx = tf.reduce_sum(tf.pow(gradients, 2.0), axis=1)
|
135
|
+
|
136
|
+
# Update node Hessian approximation mean over random iterations
|
137
|
+
ipts_hessian_trace_approx[i] = (j * ipts_hessian_trace_approx[i] + approx) / (j + 1)
|
138
|
+
|
139
|
+
# Free gradients
|
140
|
+
del gradients
|
141
|
+
|
142
|
+
# If the change to the mean approximation is insignificant (to all outputs)
|
143
|
+
# we stop the calculation.
|
120
144
|
with tape.stop_recording():
|
121
|
-
# Compute gradients of f_v with respect to the weights
|
122
|
-
gradients = tape.gradient(f_v, weight_tensor)
|
123
|
-
gradients = self._reshape_gradients(gradients,
|
124
|
-
output_channel_axis,
|
125
|
-
num_of_scores)
|
126
|
-
approx = tf.reduce_sum(tf.pow(gradients, 2.0), axis=1)
|
127
|
-
|
128
|
-
# Free gradients
|
129
|
-
del gradients
|
130
|
-
|
131
|
-
# If the change to the mean approximation is insignificant (to all outputs)
|
132
|
-
# we stop the calculation.
|
133
145
|
if j > MIN_HESSIAN_ITER:
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
approximation_per_iteration.append(approx)
|
146
|
+
if prev_mean_results is not None:
|
147
|
+
new_mean_res = \
|
148
|
+
tf.convert_to_tensor([tf.reduce_mean(res) for res in ipts_hessian_trace_approx])
|
149
|
+
relative_delta_per_node = (tf.abs(new_mean_res - prev_mean_results) /
|
150
|
+
(tf.abs(new_mean_res) + 1e-6))
|
151
|
+
max_delta = tf.reduce_max(relative_delta_per_node)
|
152
|
+
if max_delta < HESSIAN_COMP_TOLERANCE:
|
153
|
+
break
|
143
154
|
|
144
|
-
|
145
|
-
final_approx = tf.reduce_mean(tf.stack(approximation_per_iteration), axis=0)
|
155
|
+
prev_mean_results = tf.convert_to_tensor([tf.reduce_mean(res) for res in ipts_hessian_trace_approx])
|
146
156
|
|
147
157
|
# Free gradient tape
|
148
158
|
del tape
|
149
159
|
|
150
160
|
if self.hessian_request.granularity == HessianInfoGranularity.PER_TENSOR:
|
151
|
-
|
152
|
-
|
161
|
+
for final_approx in ipts_hessian_trace_approx:
|
162
|
+
if final_approx.shape != (1,): # pragma: no cover
|
163
|
+
Logger.critical(f"For HessianInfoGranularity.PER_TENSOR, the expected score shape is (1,), "
|
164
|
+
f"but found {final_approx.shape}.")
|
153
165
|
elif self.hessian_request.granularity == HessianInfoGranularity.PER_ELEMENT:
|
154
166
|
# Reshaping the scores to the original weight shape
|
155
|
-
|
167
|
+
ipts_hessian_trace_approx = \
|
168
|
+
[tf.reshape(final_approx, s) for final_approx, s in
|
169
|
+
zip(ipts_hessian_trace_approx, tensors_original_shape)]
|
156
170
|
|
157
171
|
# Add a batch axis to the Hessian approximation tensor (to align with the expected returned shape)
|
158
172
|
# We assume per-image computation, so the batch axis size is 1.
|
159
|
-
final_approx =
|
173
|
+
final_approx = [r_final_approx[np.newaxis, ...].numpy()
|
174
|
+
for r_final_approx in ipts_hessian_trace_approx]
|
160
175
|
|
161
|
-
return
|
176
|
+
return final_approx
|
162
177
|
|
163
178
|
def _reshape_gradients(self,
|
164
179
|
gradients: tf.Tensor,
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
|
15
|
+
from tqdm import tqdm
|
16
16
|
from typing import List
|
17
17
|
import torch
|
18
18
|
from torch import autograd
|
@@ -48,11 +48,6 @@ class WeightsTraceHessianCalculatorPytorch(TraceHessianCalculatorPytorch):
|
|
48
48
|
num_iterations_for_approximation: Number of iterations to use when approximating the Hessian trace.
|
49
49
|
"""
|
50
50
|
|
51
|
-
if len(trace_hessian_request.target_nodes) > 1: # pragma: no cover
|
52
|
-
Logger.critical(f"Weights Hessian approximation is currently supported only for a single target node,"
|
53
|
-
f" but the provided request contains the following target nodes: "
|
54
|
-
f"{trace_hessian_request.target_nodes}.")
|
55
|
-
|
56
51
|
super(WeightsTraceHessianCalculatorPytorch, self).__init__(graph=graph,
|
57
52
|
input_images=input_images,
|
58
53
|
fw_impl=fw_impl,
|
@@ -74,73 +69,84 @@ class WeightsTraceHessianCalculatorPytorch(TraceHessianCalculatorPytorch):
|
|
74
69
|
The function returns a list for compatibility reasons.
|
75
70
|
"""
|
76
71
|
|
77
|
-
# Check if the target node's layer type is supported.
|
78
|
-
# We assume that weights Hessian computation is done only for a single node at each request.
|
79
|
-
target_node = self.hessian_request.target_nodes[0]
|
80
|
-
if not DEFAULT_PYTORCH_INFO.is_kernel_op(target_node.type):
|
81
|
-
Logger.critical(f"Hessian information with respect to weights is not supported for "
|
82
|
-
f"{target_node.type} layers.") # pragma: no cover
|
83
|
-
|
84
72
|
# Float model
|
85
73
|
model, _ = FloatPyTorchModelBuilder(graph=self.graph).build_model()
|
86
74
|
|
87
|
-
# Get the weight attributes for the target node type
|
88
|
-
weights_attributes = DEFAULT_PYTORCH_INFO.get_kernel_op_attributes(target_node.type)
|
89
|
-
|
90
|
-
# Get the weight tensor for the target node
|
91
|
-
if len(weights_attributes) != 1: # pragma: no cover
|
92
|
-
Logger.critical(f"Currently, Hessian scores with respect to weights are supported only for nodes with a "
|
93
|
-
f"single weight attribute. {len(weights_attributes)} attributes found.")
|
94
|
-
|
95
|
-
weights_tensor = getattr(getattr(model, target_node.name), weights_attributes[0])
|
96
|
-
|
97
|
-
# Get the output channel index
|
98
|
-
output_channel_axis, _ = DEFAULT_PYTORCH_INFO.kernel_channels_mapping.get(target_node.type)
|
99
|
-
shape_channel_axis = [i for i in range(len(weights_tensor.shape))]
|
100
|
-
if self.hessian_request.granularity == HessianInfoGranularity.PER_OUTPUT_CHANNEL:
|
101
|
-
shape_channel_axis.remove(output_channel_axis)
|
102
|
-
elif self.hessian_request.granularity == HessianInfoGranularity.PER_ELEMENT:
|
103
|
-
shape_channel_axis = ()
|
104
|
-
|
105
75
|
# Run model inference
|
106
76
|
outputs = model(self.input_images)
|
107
77
|
output_tensor = self.concat_tensors(outputs)
|
108
78
|
device = output_tensor.device
|
109
79
|
|
110
|
-
|
111
|
-
|
80
|
+
ipts_hessian_trace_approx = [torch.tensor([0.0],
|
81
|
+
requires_grad=True,
|
82
|
+
device=device)
|
83
|
+
for _ in range(len(self.hessian_request.target_nodes))]
|
84
|
+
|
85
|
+
prev_mean_results = None
|
86
|
+
for j in tqdm(range(self.num_iterations_for_approximation)):
|
112
87
|
# Getting a random vector with normal distribution and the same shape as the model output
|
113
88
|
v = torch.randn_like(output_tensor, device=device)
|
114
89
|
f_v = torch.mean(torch.sum(v * output_tensor, dim=-1))
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
90
|
+
for i, ipt_node in enumerate(self.hessian_request.target_nodes): # Per Interest point weights tensor
|
91
|
+
|
92
|
+
# Check if the target node's layer type is supported.
|
93
|
+
if not DEFAULT_PYTORCH_INFO.is_kernel_op(ipt_node.type):
|
94
|
+
Logger.critical(f"Hessian information with respect to weights is not supported for "
|
95
|
+
f"{ipt_node.type} layers.") # pragma: no cover
|
96
|
+
|
97
|
+
# Get the weight attributes for the target node type
|
98
|
+
weights_attributes = DEFAULT_PYTORCH_INFO.get_kernel_op_attributes(ipt_node.type)
|
99
|
+
|
100
|
+
# Get the weight tensor for the target node
|
101
|
+
if len(weights_attributes) != 1: # pragma: no cover
|
102
|
+
Logger.critical(f"Currently, Hessian scores with respect to weights are supported only for nodes with a "
|
103
|
+
f"single weight attribute. {len(weights_attributes)} attributes found.")
|
104
|
+
|
105
|
+
weights_tensor = getattr(getattr(model, ipt_node.name), weights_attributes[0])
|
106
|
+
|
107
|
+
# Get the output channel index
|
108
|
+
output_channel_axis, _ = DEFAULT_PYTORCH_INFO.kernel_channels_mapping.get(ipt_node.type)
|
109
|
+
shape_channel_axis = [i for i in range(len(weights_tensor.shape))]
|
110
|
+
if self.hessian_request.granularity == HessianInfoGranularity.PER_OUTPUT_CHANNEL:
|
111
|
+
shape_channel_axis.remove(output_channel_axis)
|
112
|
+
elif self.hessian_request.granularity == HessianInfoGranularity.PER_ELEMENT:
|
113
|
+
shape_channel_axis = ()
|
114
|
+
|
115
|
+
# Compute gradients of f_v with respect to the weights
|
116
|
+
f_v_grad = autograd.grad(outputs=f_v,
|
117
|
+
inputs=weights_tensor,
|
118
|
+
retain_graph=True)[0]
|
119
|
+
|
120
|
+
# Trace{A^T * A} = sum of all squares values of A
|
121
|
+
approx = f_v_grad ** 2
|
122
|
+
if len(shape_channel_axis) > 0:
|
123
|
+
approx = torch.sum(approx, dim=shape_channel_axis)
|
124
|
+
|
125
|
+
# Update node Hessian approximation mean over random iterations
|
126
|
+
ipts_hessian_trace_approx[i] = (j * ipts_hessian_trace_approx[i] + approx) / (j + 1)
|
127
|
+
|
128
|
+
# If the change to the maximal mean Hessian approximation is insignificant we stop the calculation
|
129
|
+
# Note that we do not consider granularity when computing the mean
|
125
130
|
if j > MIN_HESSIAN_ITER:
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
131
|
+
if prev_mean_results is not None:
|
132
|
+
new_mean_res = torch.as_tensor([torch.mean(res) for res in ipts_hessian_trace_approx],
|
133
|
+
device=device)
|
134
|
+
relative_delta_per_node = (torch.abs(new_mean_res - prev_mean_results) /
|
135
|
+
(torch.abs(new_mean_res) + 1e-6))
|
136
|
+
max_delta = torch.max(relative_delta_per_node)
|
137
|
+
if max_delta < HESSIAN_COMP_TOLERANCE:
|
138
|
+
break
|
133
139
|
|
134
|
-
|
135
|
-
final_approx = torch.mean(torch.stack(approximation_per_iteration), dim=0)
|
140
|
+
prev_mean_results = torch.as_tensor([torch.mean(res) for res in ipts_hessian_trace_approx], device=device)
|
136
141
|
|
137
142
|
# Make sure all final shape are tensors and not scalar
|
138
143
|
if self.hessian_request.granularity == HessianInfoGranularity.PER_TENSOR:
|
139
|
-
|
144
|
+
ipts_hessian_trace_approx = [final_approx.reshape(1) for final_approx in ipts_hessian_trace_approx]
|
140
145
|
|
141
146
|
# Add a batch axis to the Hessian approximation tensor (to align with the expected returned shape).
|
142
147
|
# We assume per-image computation, so the batch axis size is 1.
|
143
|
-
final_approx =
|
148
|
+
final_approx = [r_final_approx[np.newaxis, ...].detach().cpu().numpy()
|
149
|
+
for r_final_approx in ipts_hessian_trace_approx]
|
144
150
|
|
145
|
-
return
|
151
|
+
return final_approx
|
146
152
|
|
File without changes
|
File without changes
|
{mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/requires.txt
RENAMED
File without changes
|
{mct-nightly-2.1.0.20240613.456 → mct-nightly-2.1.0.20240615.432}/mct_nightly.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|