mct-nightly 2.1.0.20240609.524__tar.gz → 2.1.0.20240611.428__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.20240609.524 → mct-nightly-2.1.0.20240611.428}/PKG-INFO +1 -1
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/mct_nightly.egg-info/SOURCES.txt +8 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/__init__.py +1 -1
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/base_node.py +1 -4
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +1 -1
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/importance_metrics/lfh_importance_metric.py +1 -1
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +10 -6
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +15 -7
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +30 -14
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +8 -7
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +108 -87
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +15 -13
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +29 -14
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +40 -14
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/node_builder.py +3 -3
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +25 -23
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +10 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/__init__.py +16 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tp_model.py +222 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_keras.py +131 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_pytorch.py +111 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/__init__.py +16 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tp_model.py +219 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_keras.py +131 -0
- mct-nightly-2.1.0.20240611.428/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_pytorch.py +110 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/LICENSE.md +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/README.md +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/base_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/functional_node.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization_data.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_aggregation_methods.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_functions_mapping.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_methods.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/network_editors/node_filters.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/importance_metrics/base_importance_metric.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/importance_metrics/importance_metric_factory.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/mask/per_channel_mask.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/mask/per_simd_group_mask.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/similarity_analyzer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/graph_prep_runner.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/keras_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/keras_node_prior_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/common.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_batch_norm.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/transform_function_call_method.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/pruning/pruning_pytorch_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/quantization_prep_runner.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/core/runner.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/defaultdict.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/quantization_format.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/keras/mctq_keras_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/get_inferable_quantizers.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/gptq/runner.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/metadata.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/pruning/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/pruning/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/pruning/pytorch/pruning_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/setup.cfg +0 -0
- {mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/setup.py +0 -0
{mct-nightly-2.1.0.20240609.524 → mct-nightly-2.1.0.20240611.428}/mct_nightly.egg-info/SOURCES.txt
RENAMED
@@ -462,6 +462,14 @@ model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_
|
|
462
462
|
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py
|
463
463
|
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py
|
464
464
|
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py
|
465
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/__init__.py
|
466
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tp_model.py
|
467
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_keras.py
|
468
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3/tpc_pytorch.py
|
469
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/__init__.py
|
470
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tp_model.py
|
471
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_keras.py
|
472
|
+
model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v3_lut/tpc_pytorch.py
|
465
473
|
model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py
|
466
474
|
model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py
|
467
475
|
model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py
|
@@ -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.20240611.000428"
|
@@ -240,10 +240,7 @@ class BaseNode:
|
|
240
240
|
if isinstance(pos, int)):
|
241
241
|
if pos > len(input_tensors):
|
242
242
|
Logger.critical("The positional weight index cannot exceed the number of input tensors to the node.") # pragma: no cover
|
243
|
-
|
244
|
-
# subject to quantization, the quantization wrapper inserts the positional weight into the node.
|
245
|
-
if not self.is_weights_quantization_enabled(pos):
|
246
|
-
input_tensors.insert(pos, weight)
|
243
|
+
input_tensors.insert(pos, weight)
|
247
244
|
|
248
245
|
return input_tensors
|
249
246
|
|
@@ -135,7 +135,7 @@ class LFHImportanceMetric(BaseImportanceMetric):
|
|
135
135
|
nodes_scores.append(_scores_for_node)
|
136
136
|
|
137
137
|
# Average and map scores to nodes.
|
138
|
-
self._entry_node_to_hessian_score = {node: np.mean(scores[0], axis=0) for node, scores in zip(entry_nodes, nodes_scores)}
|
138
|
+
self._entry_node_to_hessian_score = {node: np.mean(scores[0], axis=0).flatten() for node, scores in zip(entry_nodes, nodes_scores)}
|
139
139
|
|
140
140
|
self._entry_node_count_oc_nparams = self._count_oc_nparams(entry_nodes=entry_nodes)
|
141
141
|
_entry_node_l2_oc_norm = self._get_squaredl2norm(entry_nodes=entry_nodes)
|
@@ -326,13 +326,17 @@ class WeightsAttrQuantizationConfig:
|
|
326
326
|
|
327
327
|
"""
|
328
328
|
assert self.enable_weights_quantization
|
329
|
+
assert not (self.weights_per_channel_threshold and self.weights_channels_axis is None), \
|
330
|
+
"Trying to calculate threshold per channel, channel axis in None."
|
329
331
|
if self.weights_quantization_params_fn is not None:
|
330
|
-
self.set_weights_quantization_param(
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
332
|
+
self.set_weights_quantization_param(
|
333
|
+
self.weights_quantization_params_fn(tensor_data,
|
334
|
+
p=self.l_p_value,
|
335
|
+
n_bits=self.weights_n_bits,
|
336
|
+
per_channel=self.weights_per_channel_threshold and self.weights_channels_axis is not None,
|
337
|
+
channel_axis=self.weights_channels_axis[0], # output channel axis
|
338
|
+
min_threshold=min_threshold)[0] # Take only first output, the q-params, as axis is already chosen.
|
339
|
+
)
|
336
340
|
else:
|
337
341
|
self.set_weights_quantization_param({})
|
338
342
|
|
@@ -13,7 +13,7 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
15
|
|
16
|
-
from typing import Dict
|
16
|
+
from typing import Dict, Tuple
|
17
17
|
import numpy as np
|
18
18
|
from sklearn.cluster import KMeans
|
19
19
|
|
@@ -42,7 +42,8 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
|
|
42
42
|
is_symmetric: bool = False,
|
43
43
|
node=None,
|
44
44
|
hessian_info_service: HessianInfoService = None,
|
45
|
-
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES
|
45
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES,
|
46
|
+
) -> Tuple[Dict[str, np.ndarray], int]:
|
46
47
|
"""
|
47
48
|
The quantizer first finds the closest max value per channel of tensor_data.
|
48
49
|
Now, we divide tensor_data with the threshold vector per channel. In addition, we scale the result to the range
|
@@ -70,27 +71,34 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
|
|
70
71
|
if n_bits >= LUT_VALUES_BITWIDTH:
|
71
72
|
Logger.critical(f'Look-Up-Table (LUT) bit configuration exceeds maximum: {n_bits} bits provided, must be less than {LUT_VALUES_BITWIDTH} bits.') # pragma: no cover
|
72
73
|
# TODO: need to set this externally
|
74
|
+
n_data_points = len(np.unique(tensor_data.flatten()))
|
73
75
|
if len(np.unique(tensor_data.flatten())) < 2 ** n_bits:
|
74
|
-
n_clusters =
|
76
|
+
n_clusters = n_data_points
|
75
77
|
else:
|
76
78
|
n_clusters = 2 ** n_bits
|
77
79
|
kmeans = KMeans(n_clusters=n_clusters, n_init=10)
|
78
80
|
|
79
81
|
threshold_selection_tensor = symmetric_selection_tensor if is_symmetric else power_of_two_selection_tensor
|
80
|
-
|
81
|
-
|
82
|
-
|
82
|
+
|
83
|
+
_params, channel_axis = threshold_selection_tensor(tensor_data, p, n_bits, per_channel,
|
84
|
+
channel_axis, n_iter, min_threshold,
|
85
|
+
qc.QuantizationErrorMethod.NOCLIPPING)
|
86
|
+
thresholds_per_channel = _params[THRESHOLD]
|
83
87
|
|
84
88
|
tensor_for_kmeans = int_quantization_with_threshold(tensor_data, thresholds_per_channel, LUT_VALUES_BITWIDTH)
|
85
89
|
kmeans.fit(tensor_for_kmeans.reshape(-1, 1))
|
86
90
|
|
87
91
|
# Add 0 to the LUT
|
88
92
|
cc = np.round(kmeans.cluster_centers_)
|
93
|
+
if n_data_points < 2 ** n_bits and np.all(cc != 0):
|
94
|
+
# In case there are fewer data points than potential clusters, we can add the cluster 0.0
|
95
|
+
# to the original clusters array to improve quantization (i.e. no need to zero one of the clusters).
|
96
|
+
cc = np.concatenate([np.zeros([1, 1], dtype=cc.dtype), cc])
|
89
97
|
closest2zero_idx = (np.abs(cc - 0)).argmin()
|
90
98
|
cc[closest2zero_idx] = 0.0
|
91
99
|
|
92
100
|
return {LUT_VALUES: cc,
|
93
|
-
SCALE_PER_CHANNEL: thresholds_per_channel}
|
101
|
+
SCALE_PER_CHANNEL: thresholds_per_channel}, channel_axis
|
94
102
|
|
95
103
|
|
96
104
|
def lut_kmeans_histogram(bins: np.ndarray,
|
@@ -13,6 +13,7 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
15
|
import numpy as np
|
16
|
+
from typing import Union, Tuple, Dict
|
16
17
|
|
17
18
|
import model_compression_toolkit.core.common.quantization.quantization_config as qc
|
18
19
|
from model_compression_toolkit.constants import MIN_THRESHOLD, THRESHOLD, NUM_QPARAM_HESSIAN_SAMPLES
|
@@ -23,20 +24,22 @@ from model_compression_toolkit.core.common.quantization.quantizers.quantizers_he
|
|
23
24
|
from model_compression_toolkit.core.common.quantization.quantization_params_generation.error_functions import \
|
24
25
|
get_threshold_selection_tensor_error_function, get_threshold_selection_histogram_error_function
|
25
26
|
from model_compression_toolkit.target_platform_capabilities.target_platform import QuantizationMethod
|
27
|
+
from model_compression_toolkit.core.common.similarity_analyzer import compute_mse
|
28
|
+
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import quantize_tensor
|
26
29
|
|
27
30
|
|
28
31
|
def power_of_two_selection_tensor(tensor_data: np.ndarray,
|
29
32
|
p: int,
|
30
33
|
n_bits: int,
|
31
34
|
per_channel: bool = False,
|
32
|
-
channel_axis: int = 1,
|
35
|
+
channel_axis: Union[int, None] = 1,
|
33
36
|
n_iter: int = 10,
|
34
37
|
min_threshold: float = MIN_THRESHOLD,
|
35
38
|
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE,
|
36
39
|
node=None,
|
37
40
|
hessian_info_service: HessianInfoService = None,
|
38
41
|
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES,
|
39
|
-
) ->
|
42
|
+
) -> Tuple[Dict[str, np.ndarray], int]:
|
40
43
|
"""
|
41
44
|
Compute the power of two threshold based on the provided QuantizationErrorMethod to quantize the tensor.
|
42
45
|
Different search is applied, depends on the value of the selected QuantizationErrorMethod.
|
@@ -46,7 +49,7 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
|
|
46
49
|
p: p-norm to use for the Lp-norm distance.
|
47
50
|
n_bits: Number of bits to quantize the tensor.
|
48
51
|
per_channel: Whether the quantization should be per-channel or not.
|
49
|
-
channel_axis: Output channel index.
|
52
|
+
channel_axis: Output channel index. if None, search for best axis.
|
50
53
|
n_iter: Number of iterations to search for the optimal threshold (not used for this method).
|
51
54
|
min_threshold: Minimal threshold to use if threshold is too small (not used for this method).
|
52
55
|
quant_error_method: an error function to optimize the parameters' selection accordingly.
|
@@ -56,11 +59,24 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
|
|
56
59
|
|
57
60
|
Returns:
|
58
61
|
Power of two threshold to quantize the tensor in a power of 2 manner.
|
62
|
+
Selected quantization channel axis.
|
59
63
|
"""
|
60
64
|
|
61
65
|
if quant_error_method == qc.QuantizationErrorMethod.NOCLIPPING:
|
62
|
-
|
63
|
-
|
66
|
+
if channel_axis is None and per_channel:
|
67
|
+
total_error_list = []
|
68
|
+
th_list = []
|
69
|
+
for _axis in range(len(tensor_data.shape)):
|
70
|
+
tensor_max = get_tensor_max(tensor_data, per_channel, _axis, n_bits)
|
71
|
+
threshold = max_power_of_two(tensor_max, min_threshold)
|
72
|
+
q_tensor_data = quantize_tensor(tensor_data, threshold, n_bits, True)
|
73
|
+
total_error_list.append(compute_mse(tensor_data, q_tensor_data, norm=True))
|
74
|
+
th_list.append(threshold)
|
75
|
+
channel_axis = np.argmin(total_error_list)
|
76
|
+
threshold = th_list[channel_axis]
|
77
|
+
else:
|
78
|
+
tensor_max = get_tensor_max(tensor_data, per_channel, channel_axis, n_bits)
|
79
|
+
threshold = max_power_of_two(tensor_max, min_threshold)
|
64
80
|
else:
|
65
81
|
signed = True # weights are always signed
|
66
82
|
axis = -1 if per_channel else None
|
@@ -69,15 +85,15 @@ def power_of_two_selection_tensor(tensor_data: np.ndarray,
|
|
69
85
|
n_bits=n_bits, signed=signed, node=node,
|
70
86
|
hessian_info_service=hessian_info_service,
|
71
87
|
num_hessian_samples=num_hessian_samples)
|
72
|
-
threshold = qparams_selection_tensor_search(error_function,
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
return {THRESHOLD: threshold}
|
88
|
+
threshold, channel_axis = qparams_selection_tensor_search(error_function,
|
89
|
+
tensor_data,
|
90
|
+
n_bits,
|
91
|
+
per_channel=per_channel,
|
92
|
+
channel_axis=channel_axis,
|
93
|
+
n_iter=n_iter,
|
94
|
+
min_threshold=min_threshold,
|
95
|
+
signed=signed)
|
96
|
+
return {THRESHOLD: threshold}, channel_axis
|
81
97
|
|
82
98
|
|
83
99
|
def power_of_two_selection_histogram(bins: np.ndarray,
|
@@ -84,13 +84,14 @@ def calculate_quantization_params(graph: Graph,
|
|
84
84
|
mod_attr_cfg = copy.deepcopy(attr_cfg)
|
85
85
|
mod_attr_cfg.weights_error_method = QuantizationErrorMethod.MSE
|
86
86
|
|
87
|
-
weights_params = get_weights_qparams(n.get_weights_by_keys(attr),
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
87
|
+
weights_params, output_channels_axis = get_weights_qparams(n.get_weights_by_keys(attr),
|
88
|
+
candidate_qc.weights_quantization_cfg,
|
89
|
+
mod_attr_cfg,
|
90
|
+
output_channels_axis,
|
91
|
+
node=n,
|
92
|
+
hessian_info_service=hessian_info_service,
|
93
|
+
num_hessian_samples=num_hessian_samples)
|
94
|
+
attr_cfg.weights_channels_axis = (output_channels_axis, attr_cfg.weights_channels_axis[1])
|
94
95
|
attr_cfg.set_weights_quantization_param(weights_params)
|
95
96
|
|
96
97
|
if n.is_activation_quantization_enabled():
|
@@ -27,7 +27,7 @@ from model_compression_toolkit.constants import MIN_THRESHOLD, DEFAULT_TOL, DEFA
|
|
27
27
|
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import quantize_tensor, \
|
28
28
|
reshape_tensor_for_per_channel_search, uniform_quantize_tensor, get_output_shape
|
29
29
|
from model_compression_toolkit.core.common.quantization.quantizers.quantizers_helpers import max_power_of_two, \
|
30
|
-
get_tensor_max
|
30
|
+
get_tensor_max, get_tensor_min
|
31
31
|
|
32
32
|
|
33
33
|
def qparams_selection_tensor_search(error_function: Callable,
|
@@ -56,41 +56,49 @@ def qparams_selection_tensor_search(error_function: Callable,
|
|
56
56
|
signed: a flag whether the tensor is signed.
|
57
57
|
|
58
58
|
Returns:
|
59
|
-
Optimal constrained threshold to quantize the tensor
|
59
|
+
Optimal constrained threshold to quantize the tensor, and best channel axis if input channel_axis was None,
|
60
|
+
else return the input channel axis.
|
60
61
|
|
61
62
|
"""
|
62
63
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
64
|
+
search_axes = range(len(tensor_data.shape)) if channel_axis is None and per_channel else [channel_axis]
|
65
|
+
total_error_list = []
|
66
|
+
th_list = []
|
67
|
+
for _axis in search_axes:
|
68
|
+
output_shape = get_output_shape(tensor_data.shape, _axis)
|
68
69
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
tensor_data_r = reshape_tensor_for_per_channel_search(tensor_data, channel_axis)
|
70
|
+
# First threshold to check is the constrained threshold based on the tensor's maximal value.
|
71
|
+
tensor_max = get_tensor_max(tensor_data, per_channel, _axis, n_bits)
|
72
|
+
threshold = 2 * max_power_of_two(tensor_max, min_threshold)
|
73
73
|
|
74
|
-
|
75
|
-
|
76
|
-
# is used for quantizing the tensor and computing the error. The error is appended to an error list, which
|
77
|
-
# eventually used to select the threshold with the minimal error.
|
78
|
-
for i in range(n_iter):
|
74
|
+
# Rearrange the tensor such that each sub-tensor is flattened, and we iterate over each
|
75
|
+
# one of them when searching for the threshold.
|
79
76
|
if per_channel:
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
77
|
+
tensor_data_r = reshape_tensor_for_per_channel_search(tensor_data, _axis)
|
78
|
+
|
79
|
+
error_list = [] # init an empty error list
|
80
|
+
# On each iteration a new constrained threshold which equal to half of the previous tested threshold
|
81
|
+
# is used for quantizing the tensor and computing the error. The error is appended to an error list, which
|
82
|
+
# eventually used to select the threshold with the minimal error.
|
83
|
+
for i in range(n_iter):
|
84
|
+
if per_channel:
|
85
|
+
threshold_hat = (threshold / (2 ** i)).reshape([-1, 1])
|
86
|
+
qt = quantize_tensor(tensor_data_r, threshold_hat, n_bits, signed)
|
87
|
+
per_channel_error = _error_function_wrapper(error_function, tensor_data_r, qt, threshold_hat)
|
88
|
+
error_list.append(per_channel_error)
|
89
|
+
else: # quantize per-tensor
|
90
|
+
qt = quantize_tensor(tensor_data, threshold / (2 ** i), n_bits, signed)
|
91
|
+
error = error_function(qt, tensor_data, threshold=threshold / (2 ** i))
|
92
|
+
error_list.append(error)
|
93
|
+
|
94
|
+
# Take the index of the minimal error, and use it compute the threshold which yielded it.
|
95
|
+
err_mat = np.stack(error_list, axis=-1)
|
96
|
+
i = np.argmin(err_mat, axis=-1)
|
97
|
+
th_list.append(np.maximum(np.reshape(threshold.flatten() / np.power(2, i), output_shape), min_threshold))
|
98
|
+
total_error_list.append(err_mat.min(axis=-1).mean())
|
99
|
+
|
100
|
+
best_axis_index = np.argmin(total_error_list)
|
101
|
+
return th_list[best_axis_index], search_axes[best_axis_index]
|
94
102
|
|
95
103
|
|
96
104
|
def qparams_selection_histogram_search(error_function: Callable,
|
@@ -390,13 +398,12 @@ def search_dynamic_range(base_range: np.ndarray, x: np.ndarray, scalers: np.ndar
|
|
390
398
|
|
391
399
|
def qparams_symmetric_selection_tensor_search(error_function: Callable,
|
392
400
|
tensor_data: np.ndarray,
|
393
|
-
tensor_max: np.ndarray,
|
394
401
|
n_bits: int,
|
395
402
|
per_channel: bool = False,
|
396
403
|
channel_axis: int = 1,
|
397
404
|
n_iter: int = SYMMETRIC_TENSOR_PER_CHANNEL_N_ITER,
|
398
405
|
min_threshold=MIN_THRESHOLD,
|
399
|
-
signed: bool = True) ->
|
406
|
+
signed: bool = True) -> Tuple[np.ndarray, int]:
|
400
407
|
"""
|
401
408
|
Search for optimal threshold (per-channel or per-tensor) for symmetric quantization of a tensor,
|
402
409
|
using the iterative optimizer method.
|
@@ -404,7 +411,6 @@ def qparams_symmetric_selection_tensor_search(error_function: Callable,
|
|
404
411
|
Args:
|
405
412
|
error_function: Function to compute the error between the original and quantized tensors.
|
406
413
|
tensor_data: Numpy array with tensor's content.
|
407
|
-
tensor_max: The max value of the tensor.
|
408
414
|
n_bits: Number of bits to quantize the tensor.
|
409
415
|
per_channel: Whether the tensor should be quantized per-channel or per-tensor.
|
410
416
|
channel_axis: Index of output channels dimension.
|
@@ -417,46 +423,55 @@ def qparams_symmetric_selection_tensor_search(error_function: Callable,
|
|
417
423
|
|
418
424
|
"""
|
419
425
|
|
420
|
-
|
426
|
+
search_axes = range(len(tensor_data.shape)) if channel_axis is None and per_channel else [channel_axis]
|
427
|
+
total_error_list = []
|
428
|
+
th_list = []
|
429
|
+
for _axis in search_axes:
|
430
|
+
tensor_max = get_tensor_max(tensor_data, per_channel, _axis, n_bits)
|
431
|
+
output_shape = get_output_shape(tensor_data.shape, _axis)
|
421
432
|
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
433
|
+
if per_channel:
|
434
|
+
# Rearrange the tensor such that each sub-tensor is flattened, and we iterate
|
435
|
+
# over each one of them when searching for the threshold.
|
436
|
+
tensor_data_r = reshape_tensor_for_per_channel_search(tensor_data, _axis)
|
437
|
+
max_tensor = np.maximum(min_threshold, tensor_max)
|
438
|
+
res = qparams_symmetric_iterative_minimization(x0=max_tensor,
|
439
|
+
x=tensor_data_r,
|
440
|
+
loss_fn=error_function, # gets float_tensor, fxp_tensor, threshold
|
441
|
+
n_bits=n_bits,
|
442
|
+
signed=signed,
|
443
|
+
n_intervals=SYMMETRIC_TENSOR_PER_CHANNEL_N_INTERVALS,
|
444
|
+
n_iter=SYMMETRIC_TENSOR_PER_CHANNEL_N_ITER,
|
445
|
+
dec_freq=SYMMETRIC_TENSOR_PER_CHANNEL_DEC_FREQ,
|
446
|
+
per_channel=True)
|
447
|
+
th = np.reshape(np.maximum(min_threshold, res['param']), output_shape)
|
448
|
+
else:
|
449
|
+
# quantize per-tensor
|
450
|
+
res = qparams_symmetric_iterative_minimization(x0=get_init_threshold(min_threshold, tensor_max),
|
451
|
+
x=tensor_data,
|
452
|
+
loss_fn=error_function,
|
453
|
+
n_bits=n_bits,
|
454
|
+
signed=signed,
|
455
|
+
n_intervals=SYMMETRIC_TENSOR_N_INTERVALS,
|
456
|
+
n_iter=SYMMETRIC_TENSOR_N_ITER,
|
457
|
+
dec_freq=SYMMETRIC_TENSOR_DEC_FREQ,
|
458
|
+
per_channel=False)
|
459
|
+
th = max(min_threshold, res['param'])
|
460
|
+
|
461
|
+
total_error_list.append(res['loss'].mean())
|
462
|
+
th_list.append(th)
|
463
|
+
|
464
|
+
best_axis_index = np.argmin(total_error_list)
|
465
|
+
return th_list[best_axis_index], search_axes[best_axis_index]
|
450
466
|
|
451
467
|
|
452
468
|
def qparams_uniform_selection_tensor_search(error_function: Callable,
|
453
469
|
tensor_data: np.ndarray,
|
454
|
-
tensor_min: np.ndarray,
|
455
|
-
tensor_max: np.ndarray,
|
456
470
|
n_bits: int,
|
457
471
|
per_channel: bool = False,
|
458
472
|
channel_axis: int = 1,
|
459
|
-
n_iter: int = UNIFORM_TENSOR_PER_CHANNEL_N_ITER
|
473
|
+
n_iter: int = UNIFORM_TENSOR_PER_CHANNEL_N_ITER,
|
474
|
+
) -> Tuple[Tuple[np.ndarray, np.ndarray], int]:
|
460
475
|
"""
|
461
476
|
Search for optimal quantization range (per-channel or per-tensor) for uniform quantization of a tensor,
|
462
477
|
using the iterative optimizer method and built-in scale factors
|
@@ -465,8 +480,6 @@ def qparams_uniform_selection_tensor_search(error_function: Callable,
|
|
465
480
|
Args:
|
466
481
|
error_function: Function to compute the error between the original and quantized tensors.
|
467
482
|
tensor_data: Numpy array with tensor's content.
|
468
|
-
tensor_min: The min value of the tensor.
|
469
|
-
tensor_max: The max value of the tensor.
|
470
483
|
n_bits: Number of bits to quantize the tensor.
|
471
484
|
per_channel: Whether the tensor should be quantized per-channel or per-tensor.
|
472
485
|
channel_axis: Index of output channels dimension.
|
@@ -477,17 +490,22 @@ def qparams_uniform_selection_tensor_search(error_function: Callable,
|
|
477
490
|
|
478
491
|
"""
|
479
492
|
|
480
|
-
|
493
|
+
search_axes = range(len(tensor_data.shape)) if channel_axis is None and per_channel else [channel_axis]
|
494
|
+
total_error_list = []
|
495
|
+
th_list = []
|
496
|
+
for _axis in search_axes:
|
497
|
+
tensor_min = get_tensor_min(tensor_data, per_channel, _axis)
|
498
|
+
tensor_max = get_tensor_max(tensor_data, per_channel, _axis, n_bits, is_uniform_quantization=True)
|
499
|
+
output_shape = get_output_shape(tensor_data.shape, _axis)
|
481
500
|
|
482
|
-
|
483
|
-
|
484
|
-
|
501
|
+
alpha = np.linspace(BOTTOM_FACTOR, UPPER_FACTOR, UNIFORM_TENSOR_N_SAMPLES)
|
502
|
+
beta = np.linspace(BOTTOM_FACTOR, UPPER_FACTOR, UNIFORM_TENSOR_N_SAMPLES)
|
503
|
+
scalers = np.asarray(list(itertools.product(alpha, beta)))
|
485
504
|
|
486
|
-
|
487
|
-
|
488
|
-
if per_channel:
|
505
|
+
# Rearrange the tensor such that each sub-tensor is flattened, and we iterate over
|
506
|
+
# each one of them when searching for the threshold.
|
489
507
|
if per_channel:
|
490
|
-
tensor_data_r = reshape_tensor_for_per_channel_search(tensor_data,
|
508
|
+
tensor_data_r = reshape_tensor_for_per_channel_search(tensor_data, _axis)
|
491
509
|
tensor_min_max = np.column_stack([tensor_min.flatten(), tensor_max.flatten()])
|
492
510
|
res = iterative_uniform_dynamic_range_search(x0=tensor_min_max,
|
493
511
|
x=tensor_data_r,
|
@@ -496,18 +514,21 @@ def qparams_uniform_selection_tensor_search(error_function: Callable,
|
|
496
514
|
n_bits=n_bits,
|
497
515
|
n_iter=UNIFORM_TENSOR_PER_CHANNEL_N_ITER,
|
498
516
|
per_channel=True)
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
517
|
+
th_list.append((np.reshape(res['param'][:, 0], output_shape), np.reshape(res['param'][:, 1], output_shape)))
|
518
|
+
else:
|
519
|
+
# quantize per-tensor
|
520
|
+
res = iterative_uniform_dynamic_range_search(x0=np.array([tensor_min, tensor_max]),
|
521
|
+
x=tensor_data,
|
522
|
+
scalers=scalers,
|
523
|
+
loss_fn=error_function,
|
524
|
+
n_bits=n_bits,
|
525
|
+
n_iter=UNIFORM_TENSOR_N_ITER,
|
526
|
+
per_channel=False)
|
527
|
+
th_list.append(tuple(np.split(res['param'], 2)))
|
528
|
+
total_error_list.append(res['loss'].mean())
|
529
|
+
|
530
|
+
best_axis_index = np.argmin(total_error_list)
|
531
|
+
return th_list[best_axis_index], search_axes[best_axis_index]
|
511
532
|
|
512
533
|
|
513
534
|
def qparams_symmetric_selection_histogram_search(error_function: Callable,
|
@@ -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
|
-
from typing import Dict, Any
|
15
|
+
from typing import Dict, Any, Tuple
|
16
16
|
|
17
17
|
import numpy as np
|
18
18
|
|
@@ -34,7 +34,7 @@ def get_weights_qparams(weights_attr_values: np.ndarray,
|
|
34
34
|
output_channels_axis: int,
|
35
35
|
node=None,
|
36
36
|
hessian_info_service: HessianInfoService = None,
|
37
|
-
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Dict[Any, Any]:
|
37
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Tuple[Dict[Any, Any], int]:
|
38
38
|
"""
|
39
39
|
Compute thresholds to quantize a kernel according to a NodeWeightsQuantizationConfig
|
40
40
|
instance.
|
@@ -50,22 +50,24 @@ def get_weights_qparams(weights_attr_values: np.ndarray,
|
|
50
50
|
|
51
51
|
Returns:
|
52
52
|
A dictionary with the quantization threshold of the kernel.
|
53
|
+
Selected quantization channel axis.
|
53
54
|
"""
|
54
55
|
if attr_quant_config.weights_quantization_params_fn is not None:
|
55
|
-
weights_params = attr_quant_config.weights_quantization_params_fn(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
56
|
+
weights_params, output_channels_axis = attr_quant_config.weights_quantization_params_fn(
|
57
|
+
weights_attr_values,
|
58
|
+
p=attr_quant_config.l_p_value,
|
59
|
+
n_bits=attr_quant_config.weights_n_bits,
|
60
|
+
per_channel=attr_quant_config.weights_per_channel_threshold,
|
61
|
+
channel_axis=output_channels_axis,
|
62
|
+
min_threshold=weights_quant_config.min_threshold,
|
63
|
+
quant_error_method=attr_quant_config.weights_error_method,
|
64
|
+
node=node,
|
65
|
+
hessian_info_service=hessian_info_service,
|
66
|
+
num_hessian_samples=num_hessian_samples)
|
65
67
|
else:
|
66
68
|
weights_params = {}
|
67
69
|
|
68
|
-
return weights_params
|
70
|
+
return weights_params, output_channels_axis
|
69
71
|
|
70
72
|
|
71
73
|
def _get_kernel_channels_mapping(fw_info:FrameworkInfo,
|