mct-nightly 1.10.0.20231204.post420__tar.gz → 1.10.0.20231206.post417__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/PKG-INFO +1 -1
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/mct_nightly.egg-info/SOURCES.txt +1 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/framework_implementation.py +8 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/base_node.py +10 -1
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +2 -2
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +1 -1
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +1 -1
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +82 -5
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +3 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +1 -3
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/graph_prep_runner.py +1 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/constants.py +2 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +72 -2
- mct-nightly-1.10.0.20231206.post417/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +108 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/keras_implementation.py +10 -1
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +6 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/setup.cfg +1 -1
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/LICENSE.md +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/README.md +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/collectors/statistics_collector_generator.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/data_loader.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/defaultdict.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/base_graph.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/functional_node.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_aggregation_methods.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_data.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_functions_mapping.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/kpi_tools/kpi_methods.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/network_editors/node_filters.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_analyzer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/kmeans_params.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantizers/kmeans_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/similarity_analyzer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_relu_upper_bound.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/keras_node_prior_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/kpi_data_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/common.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/node_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/kpi_data_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/quantization_prep_runner.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/core/runner.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizers.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizers.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/gptq/runner.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/legacy/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/legacy/keras_quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/legacy/pytorch_quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/quantization_format.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct-nightly-1.10.0.20231204.post420 → mct-nightly-1.10.0.20231206.post417}/setup.py +0 -0
|
@@ -167,6 +167,7 @@ model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm
|
|
|
167
167
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py
|
|
168
168
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py
|
|
169
169
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py
|
|
170
|
+
model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py
|
|
170
171
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py
|
|
171
172
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py
|
|
172
173
|
model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_relu_upper_bound.py
|
|
@@ -235,6 +235,14 @@ class FrameworkImplementation(ABC):
|
|
|
235
235
|
raise NotImplemented(f'{self.__class__.__name__} have to implement the '
|
|
236
236
|
f'framework\'s get_linear_collapsing_substitution method.') # pragma: no cover
|
|
237
237
|
|
|
238
|
+
@abstractmethod
|
|
239
|
+
def get_op2d_add_const_collapsing_substitution(self) -> common.BaseSubstitution:
|
|
240
|
+
"""
|
|
241
|
+
Returns: conv2d add const collapsing substitution
|
|
242
|
+
"""
|
|
243
|
+
raise NotImplemented(f'{self.__class__.__name__} have to implement the '
|
|
244
|
+
f'framework\'s get_op2d_add_const_collapsing_substitution method.') # pragma: no cover
|
|
245
|
+
|
|
238
246
|
@abstractmethod
|
|
239
247
|
def get_substitutions_statistics_correction(self, quant_config: QuantizationConfig) -> \
|
|
240
248
|
List[common.BaseSubstitution]:
|
|
@@ -79,7 +79,8 @@ class BaseNode:
|
|
|
79
79
|
def type(self):
|
|
80
80
|
"""
|
|
81
81
|
A function to get the node's layer_class op for convenient comparison
|
|
82
|
-
:
|
|
82
|
+
Returns:
|
|
83
|
+
the node's layer_class
|
|
83
84
|
"""
|
|
84
85
|
return self.layer_class
|
|
85
86
|
|
|
@@ -130,6 +131,14 @@ class BaseNode:
|
|
|
130
131
|
"""
|
|
131
132
|
return f'{self.type.__name__}:{self.name}'
|
|
132
133
|
|
|
134
|
+
def is_reused(self) -> bool:
|
|
135
|
+
"""
|
|
136
|
+
Check whether the node is reused or not
|
|
137
|
+
Returns:
|
|
138
|
+
True if node is reused, else False
|
|
139
|
+
"""
|
|
140
|
+
return self.reuse or self.reuse_group is not None
|
|
141
|
+
|
|
133
142
|
def get_weights_by_keys(self, name: str) -> np.ndarray:
|
|
134
143
|
"""
|
|
135
144
|
Get a node's weight by its name.
|
|
@@ -93,7 +93,7 @@ class BatchNormalizationFolding(common.BaseSubstitution):
|
|
|
93
93
|
|
|
94
94
|
# If the linear operator is part of a reused group (it is the "base" node, or a reused node),
|
|
95
95
|
# we should skip the substitution.
|
|
96
|
-
if conv_node.
|
|
96
|
+
if conv_node.is_reused():
|
|
97
97
|
return graph
|
|
98
98
|
|
|
99
99
|
bn_node = edge_nodes[1]
|
|
@@ -230,7 +230,7 @@ class BatchNormalizationForwardFolding(common.BaseSubstitution):
|
|
|
230
230
|
|
|
231
231
|
# If the linear operator is part of a reused group (it is the "base" node, or a reused node),
|
|
232
232
|
# we should skip the substitution.
|
|
233
|
-
if conv_node.
|
|
233
|
+
if conv_node.is_reused() or bn_node.is_reused():
|
|
234
234
|
return graph
|
|
235
235
|
|
|
236
236
|
if len(graph.get_next_nodes(bn_node)) > 1 or len(graph.get_prev_nodes(conv_node)) > 1:
|
|
@@ -79,7 +79,7 @@ class BatchNormalizationReconstruction(common.BaseSubstitution):
|
|
|
79
79
|
|
|
80
80
|
# If the linear operator is part of a reused group (it is the "base" node, or a reused node),
|
|
81
81
|
# we should skip the substitution.
|
|
82
|
-
if source_node.
|
|
82
|
+
if source_node.is_reused():
|
|
83
83
|
for qc in source_node.candidates_quantization_cfg:
|
|
84
84
|
qc.weights_quantization_cfg.weights_second_moment_correction = False
|
|
85
85
|
return graph
|
|
@@ -102,7 +102,7 @@ class BatchNormalizationRefusing(common.BaseSubstitution):
|
|
|
102
102
|
|
|
103
103
|
# If the linear operator is part of a reused group (it is the "base" node, or a reused node),
|
|
104
104
|
# we should skip the substitution.
|
|
105
|
-
if source_node.
|
|
105
|
+
if source_node.is_reused():
|
|
106
106
|
Logger.exception("If the linear operator is part of a reused group we should skip the the BN folding "
|
|
107
107
|
"substitution and SMC feature") # pragma: no cover
|
|
108
108
|
|
|
@@ -91,14 +91,11 @@ class Conv2DCollapsing(common.BaseSubstitution):
|
|
|
91
91
|
Graph after applying the substitution.
|
|
92
92
|
"""
|
|
93
93
|
|
|
94
|
-
first_node = edge_nodes
|
|
95
|
-
second_node = edge_nodes[1]
|
|
94
|
+
first_node, second_node, _ = edge_nodes
|
|
96
95
|
|
|
97
96
|
# If the linear operator is part of a reused group (it is the "base" node, or a reused node),
|
|
98
97
|
# we should skip the substitution.
|
|
99
|
-
if first_node.
|
|
100
|
-
return graph
|
|
101
|
-
if second_node.reuse or second_node.reuse_group is not None:
|
|
98
|
+
if first_node.is_reused() or second_node.is_reused():
|
|
102
99
|
return graph
|
|
103
100
|
|
|
104
101
|
# If there is an extra connection between these two nodes skip the substitution
|
|
@@ -182,3 +179,83 @@ class Conv2DCollapsing(common.BaseSubstitution):
|
|
|
182
179
|
assert num_edges_before_substition - len(graph.edges) == 1
|
|
183
180
|
|
|
184
181
|
return graph
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class Op2DAddConstCollapsing(common.BaseSubstitution):
|
|
185
|
+
"""
|
|
186
|
+
Collapse Add-const into preceding Op2D (Not non-linear activation between them)
|
|
187
|
+
"""
|
|
188
|
+
def __init__(self,
|
|
189
|
+
first_node: NodeOperationMatcher,
|
|
190
|
+
second_node: NodeOperationMatcher,
|
|
191
|
+
op2d_collapsing_fn: Callable,
|
|
192
|
+
bias_str: str,
|
|
193
|
+
use_bias_str: str,
|
|
194
|
+
layer_name_str: str = None):
|
|
195
|
+
"""
|
|
196
|
+
Collapsing Add-const node (2nd node) to Op2D node (first node).
|
|
197
|
+
Args:
|
|
198
|
+
first_node: Node matcher for Op2d type nodes.
|
|
199
|
+
second_node: Node matcher for add type nodes.
|
|
200
|
+
op2d_collapsing_fn: Function for updating the convolution kernel and bias
|
|
201
|
+
bias_str: The framework specific attribute name of the convolution layer's bias.
|
|
202
|
+
use_bias_str: The framework specific attribute name of the convolution layer's bias flag.
|
|
203
|
+
layer_name_str: The framework specific attribute name of layer's name.
|
|
204
|
+
"""
|
|
205
|
+
super().__init__(matcher_instance=EdgeMatcher(first_node, second_node))
|
|
206
|
+
self.op2d_collapsing_fn = op2d_collapsing_fn
|
|
207
|
+
self.bias_str = bias_str
|
|
208
|
+
self.use_bias_str = use_bias_str
|
|
209
|
+
self.layer_name_str = layer_name_str
|
|
210
|
+
|
|
211
|
+
def substitute(self,
|
|
212
|
+
graph: Graph,
|
|
213
|
+
edge_nodes: Tuple[BaseNode, BaseNode]) -> Graph:
|
|
214
|
+
"""
|
|
215
|
+
Collapse linear layer into preceding linear layers.
|
|
216
|
+
Convolution condition:
|
|
217
|
+
|-------------------------| |------|
|
|
218
|
+
| Op2D | ---> | Add-const | -> | Op2D |
|
|
219
|
+
|-------------------------| |------|
|
|
220
|
+
Args:
|
|
221
|
+
graph: Graph we apply the substitution on.
|
|
222
|
+
edge_nodes: Tuple of linear node and add nodes
|
|
223
|
+
Returns:
|
|
224
|
+
Graph after applying the substitution.
|
|
225
|
+
"""
|
|
226
|
+
|
|
227
|
+
first_node, second_node, _ = edge_nodes
|
|
228
|
+
|
|
229
|
+
# If the linear operator is part of a reused group (it is the "base" node, or a reused node),
|
|
230
|
+
# we should skip the substitution.
|
|
231
|
+
if first_node.is_reused() or second_node.is_reused():
|
|
232
|
+
return graph
|
|
233
|
+
|
|
234
|
+
# If there is an extra connection between these two nodes skip the substitution
|
|
235
|
+
if len(graph.get_next_nodes(first_node)) > 1 or len(graph.get_prev_nodes(second_node)) > 1:
|
|
236
|
+
return graph
|
|
237
|
+
|
|
238
|
+
# New collapsed bias
|
|
239
|
+
bias = self.op2d_collapsing_fn(first_node, second_node, self.bias_str)
|
|
240
|
+
|
|
241
|
+
# New collapsed node
|
|
242
|
+
op2d_collapsed = copy.deepcopy(first_node)
|
|
243
|
+
op2d_collapsed_name = first_node.name + '_collapsed'
|
|
244
|
+
op2d_collapsed.name = op2d_collapsed_name
|
|
245
|
+
op2d_collapsed.framework_attr[self.use_bias_str] = True
|
|
246
|
+
op2d_collapsed.set_weights_by_keys(self.bias_str, bias)
|
|
247
|
+
|
|
248
|
+
if self.layer_name_str is not None:
|
|
249
|
+
op2d_collapsed.framework_attr[self.layer_name_str] = op2d_collapsed_name
|
|
250
|
+
|
|
251
|
+
# Update graph
|
|
252
|
+
graph.add_node(op2d_collapsed)
|
|
253
|
+
graph.reconnect_out_edges(current_node=second_node, new_node=op2d_collapsed)
|
|
254
|
+
graph.reconnect_in_edges(current_node=first_node, new_node=op2d_collapsed)
|
|
255
|
+
graph.replace_output_node(current_node=second_node, new_node=op2d_collapsed)
|
|
256
|
+
|
|
257
|
+
graph.remove_edge(first_node, second_node)
|
|
258
|
+
graph.remove_node(first_node)
|
|
259
|
+
graph.remove_node(second_node)
|
|
260
|
+
|
|
261
|
+
return graph
|
|
@@ -30,6 +30,9 @@ def linear_collapsing_substitute(graph: common.Graph,
|
|
|
30
30
|
Returns:
|
|
31
31
|
Transformed graph after applying all linear collapsing substitutions.
|
|
32
32
|
"""
|
|
33
|
+
# TODO: remove this if after adding Op2d-add_const collapse substitution in PyTorch
|
|
34
|
+
if linear_collapsing_substitution is None:
|
|
35
|
+
return graph
|
|
33
36
|
matched_nodes = graph.filter(linear_collapsing_substitution.matcher_instance)
|
|
34
37
|
matched_nodes_list = []
|
|
35
38
|
match_indicator = True
|
|
@@ -63,9 +63,7 @@ class ResidualCollapsing(common.BaseSubstitution):
|
|
|
63
63
|
|
|
64
64
|
# If the linear operator is part of a reused group (it is the "base" node, or a reused node),
|
|
65
65
|
# we should skip the substitution.
|
|
66
|
-
if first_node.
|
|
67
|
-
return graph
|
|
68
|
-
if second_node.reuse or second_node.reuse_group is not None:
|
|
66
|
+
if first_node.is_reused() or second_node.is_reused():
|
|
69
67
|
return graph
|
|
70
68
|
|
|
71
69
|
# Check if convolution and residual satisfy the collapsing conditions, otherwise skip substitution
|
|
@@ -129,6 +129,7 @@ def get_finalized_graph(initial_graph: Graph,
|
|
|
129
129
|
transformed_graph = substitute(graph, fw_impl.get_substitutions_pre_statistics_collection(quant_config))
|
|
130
130
|
if quant_config.linear_collapsing:
|
|
131
131
|
transformed_graph = linear_collapsing_substitute(transformed_graph, fw_impl.get_linear_collapsing_substitution())
|
|
132
|
+
transformed_graph = linear_collapsing_substitute(transformed_graph, fw_impl.get_op2d_add_const_collapsing_substitution())
|
|
132
133
|
if quant_config.residual_collapsing:
|
|
133
134
|
transformed_graph = substitute(transformed_graph, fw_impl.get_residual_collapsing_substitution())
|
|
134
135
|
|
|
@@ -53,6 +53,8 @@ DIMS = 'dims'
|
|
|
53
53
|
TARGET_SHAPE = 'target_shape'
|
|
54
54
|
TRANSPOSE_A = 'transpose_a'
|
|
55
55
|
TRANSPOSE_B = 'transpose_b'
|
|
56
|
+
ADJOINT_A = 'adjoint_a'
|
|
57
|
+
ADJOINT_B = 'adjoint_b'
|
|
56
58
|
DEPTH_MULTIPLIER = 'depth_multiplier'
|
|
57
59
|
DEPTHWISE_INITIALIZER = 'depthwise_initializer'
|
|
58
60
|
DEPTHWISE_REGULARIZER = 'depthwise_regularizer'
|
|
@@ -15,10 +15,14 @@
|
|
|
15
15
|
from typing import Tuple
|
|
16
16
|
import numpy as np
|
|
17
17
|
import tensorflow as tf
|
|
18
|
-
|
|
18
|
+
if tf.__version__ < "2.6":
|
|
19
|
+
from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, Conv2DTranspose, Dense
|
|
20
|
+
else:
|
|
21
|
+
from keras.layers import Conv2D, DepthwiseConv2D, Conv2DTranspose, Dense
|
|
22
|
+
|
|
19
23
|
from model_compression_toolkit.core.common import BaseNode
|
|
20
24
|
from model_compression_toolkit.core.common.graph.graph_matchers import NodeOperationMatcher, NodeFrameworkAttrMatcher
|
|
21
|
-
from model_compression_toolkit.core.common.substitutions.linear_collapsing import Conv2DCollapsing
|
|
25
|
+
from model_compression_toolkit.core.common.substitutions.linear_collapsing import Conv2DCollapsing, Op2DAddConstCollapsing
|
|
22
26
|
from model_compression_toolkit.core.keras.constants import KERNEL, KERNEL_SIZE, STRIDES, DILATIONS, LINEAR, \
|
|
23
27
|
ACTIVATION, BIAS, USE_BIAS, LAYER_NAME, FILTERS, PADDING, GROUPS, DATA_FORMAT
|
|
24
28
|
from model_compression_toolkit.logger import Logger
|
|
@@ -123,3 +127,69 @@ def keras_linear_collapsing() -> Conv2DCollapsing:
|
|
|
123
127
|
FILTERS,
|
|
124
128
|
data_format_str=DATA_FORMAT,
|
|
125
129
|
layer_name_str=LAYER_NAME)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def op2d_add_const_collapsing_node_matchers() -> Tuple[NodeOperationMatcher, NodeOperationMatcher]:
|
|
133
|
+
"""
|
|
134
|
+
Function generates matchers for matching:
|
|
135
|
+
(Op2D, Add(const)) -> Op2D. (Op2D is one of [DepthwiseConv2D, Conv2D, Conv2DTranspose, Dense)
|
|
136
|
+
Returns:
|
|
137
|
+
Matcher for Op2D followed by Add const
|
|
138
|
+
"""
|
|
139
|
+
first_node = NodeOperationMatcher(DepthwiseConv2D) | \
|
|
140
|
+
NodeOperationMatcher(Conv2D) | \
|
|
141
|
+
NodeOperationMatcher(Conv2DTranspose) | \
|
|
142
|
+
NodeOperationMatcher(Dense)
|
|
143
|
+
second_node = NodeOperationMatcher(tf.math.add)
|
|
144
|
+
return first_node, second_node
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def op2d_add_const_collapsing_fn(op2d_node: BaseNode,
|
|
148
|
+
add_node: BaseNode,
|
|
149
|
+
bias_str: str) -> np.ndarray:
|
|
150
|
+
"""
|
|
151
|
+
Collapsing Add-Const to previous node's bias
|
|
152
|
+
Args:
|
|
153
|
+
op2d_node: Op2d layer node
|
|
154
|
+
add_node: Add layer to collapse
|
|
155
|
+
bias_str: The framework specific attribute name of the convolution layer's bias.
|
|
156
|
+
Returns:
|
|
157
|
+
The modified conv layer node's bias
|
|
158
|
+
"""
|
|
159
|
+
bias = op2d_node.get_weights_by_keys(bias_str)
|
|
160
|
+
|
|
161
|
+
# read constant from add node
|
|
162
|
+
if len(add_node.op_call_args) > 0:
|
|
163
|
+
const = add_node.op_call_args[0]
|
|
164
|
+
elif 'y' in add_node.op_call_kwargs:
|
|
165
|
+
const = add_node.op_call_kwargs['y']
|
|
166
|
+
else:
|
|
167
|
+
Logger.error(f'Unable to read constant from add node: {add_node.name}') # pragma: no cover
|
|
168
|
+
|
|
169
|
+
# convert constant to numpy array
|
|
170
|
+
if isinstance(const, tf.Tensor):
|
|
171
|
+
const = const.numpy()
|
|
172
|
+
elif isinstance(const, list):
|
|
173
|
+
const = np.array(const)
|
|
174
|
+
else:
|
|
175
|
+
Logger.error(f'Unable to convert constant to numpy array: {add_node.name}') # pragma: no cover
|
|
176
|
+
|
|
177
|
+
# return new bias
|
|
178
|
+
if bias is None:
|
|
179
|
+
return const
|
|
180
|
+
else:
|
|
181
|
+
return const + bias
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def keras_op2d_add_const_collapsing() -> Op2DAddConstCollapsing:
|
|
185
|
+
"""
|
|
186
|
+
Returns:
|
|
187
|
+
An Op2DCollapsing initialized for Keras models.
|
|
188
|
+
"""
|
|
189
|
+
first_node, second_node = op2d_add_const_collapsing_node_matchers()
|
|
190
|
+
return Op2DAddConstCollapsing(first_node,
|
|
191
|
+
second_node,
|
|
192
|
+
op2d_add_const_collapsing_fn,
|
|
193
|
+
BIAS,
|
|
194
|
+
USE_BIAS,
|
|
195
|
+
layer_name_str=LAYER_NAME)
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Copyright 2023 Sony Semiconductor Israel, Inc. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ==============================================================================
|
|
15
|
+
|
|
16
|
+
import numpy as np
|
|
17
|
+
import tensorflow as tf
|
|
18
|
+
from model_compression_toolkit.logger import Logger
|
|
19
|
+
from model_compression_toolkit.core import common
|
|
20
|
+
from model_compression_toolkit.core.common.graph.base_graph import Graph
|
|
21
|
+
from model_compression_toolkit.core.common.graph.graph_matchers import NodeOperationMatcher
|
|
22
|
+
from model_compression_toolkit.core.common.graph.base_node import BaseNode
|
|
23
|
+
from model_compression_toolkit.core.common.graph.functional_node import FunctionalNode
|
|
24
|
+
from model_compression_toolkit.core.keras.constants import TRANSPOSE_A, TRANSPOSE_B, \
|
|
25
|
+
ADJOINT_A, ADJOINT_B, UNITS, USE_BIAS, KERNEL
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class MatmulToDenseSubstitution(common.BaseSubstitution):
|
|
29
|
+
"""
|
|
30
|
+
Replace a linear layer that has an activation function, with two nodes: same linear layer without
|
|
31
|
+
an activation function, and a new activation layer to replace the function the linear node had.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def __init__(self):
|
|
35
|
+
"""
|
|
36
|
+
Matches: tf.linalg.matmul
|
|
37
|
+
"""
|
|
38
|
+
super().__init__(matcher_instance=NodeOperationMatcher(tf.linalg.matmul))
|
|
39
|
+
|
|
40
|
+
def substitute(self,
|
|
41
|
+
graph: Graph,
|
|
42
|
+
matmul_node: FunctionalNode) -> Graph:
|
|
43
|
+
"""
|
|
44
|
+
Replace tf.linalg.matmul with Tensor and const with Dense layer
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
graph: Graph we apply the substitution on.
|
|
48
|
+
matmul_node: Node to replace.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Graph after applying the substitution.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
if len(graph.get_prev_nodes(matmul_node)) > 1:
|
|
55
|
+
# matmul of 2 activation tensors -> can't replace with Dense layer
|
|
56
|
+
return graph
|
|
57
|
+
|
|
58
|
+
if matmul_node.framework_attr.get(ADJOINT_A, False) or matmul_node.framework_attr.get(ADJOINT_B, False):
|
|
59
|
+
# MCT doesn't support complex tensors
|
|
60
|
+
return graph
|
|
61
|
+
|
|
62
|
+
if matmul_node.framework_attr.get(TRANSPOSE_A, False):
|
|
63
|
+
# first input should be an activation tensor with batch axis, that shouldn't be transposed
|
|
64
|
+
return graph
|
|
65
|
+
|
|
66
|
+
# read const from matmul inputs
|
|
67
|
+
if len(matmul_node.op_call_args) > 0:
|
|
68
|
+
w = matmul_node.op_call_args[0]
|
|
69
|
+
elif 'b' in matmul_node.op_call_kwargs:
|
|
70
|
+
w = matmul_node.op_call_kwargs['b']
|
|
71
|
+
else:
|
|
72
|
+
Logger.error(f"Matmul substitution: can't locate weight for node {matmul_node.name}") # pragma: no cover
|
|
73
|
+
|
|
74
|
+
# Convert weight const to numpy array
|
|
75
|
+
if isinstance(w, tf.Tensor):
|
|
76
|
+
w = w.numpy()
|
|
77
|
+
elif isinstance(w, list):
|
|
78
|
+
w = np.array(w)
|
|
79
|
+
elif not isinstance(w, np.ndarray):
|
|
80
|
+
Logger.error(f'Unable to convert constant to numpy array: {matmul_node.name}') # pragma: no cover
|
|
81
|
+
|
|
82
|
+
if len(w.shape) != 2:
|
|
83
|
+
# weight tensor should be of shape (Cin, Cout)
|
|
84
|
+
return graph
|
|
85
|
+
|
|
86
|
+
# transpose const if "transpose_b" flag is True
|
|
87
|
+
if matmul_node.op_call_kwargs.get(TRANSPOSE_B, False) or (
|
|
88
|
+
len(matmul_node.op_call_args) >= 3 and matmul_node.op_call_args[2]):
|
|
89
|
+
w = w.transpose()
|
|
90
|
+
|
|
91
|
+
dense_node = BaseNode(matmul_node.name,
|
|
92
|
+
{UNITS: w.shape[1], USE_BIAS: False},
|
|
93
|
+
matmul_node.input_shape, matmul_node.output_shape,
|
|
94
|
+
{KERNEL: w}, tf.keras.layers.Dense,
|
|
95
|
+
reuse=matmul_node.reuse, reuse_group=matmul_node.reuse_group)
|
|
96
|
+
|
|
97
|
+
graph.add_node(dense_node)
|
|
98
|
+
graph.reconnect_in_edges(current_node=matmul_node,
|
|
99
|
+
new_node=dense_node)
|
|
100
|
+
graph.reconnect_out_edges(current_node=matmul_node,
|
|
101
|
+
new_node=dense_node)
|
|
102
|
+
graph.replace_output_node(current_node=matmul_node,
|
|
103
|
+
new_node=dense_node)
|
|
104
|
+
graph.remove_node(matmul_node)
|
|
105
|
+
|
|
106
|
+
return graph
|
|
107
|
+
|
|
108
|
+
|
|
@@ -68,6 +68,8 @@ from model_compression_toolkit.core.common.user_info import UserInformation
|
|
|
68
68
|
from model_compression_toolkit.core.keras.default_framework_info import DEFAULT_KERAS_INFO
|
|
69
69
|
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.activation_decomposition import \
|
|
70
70
|
ActivationDecomposition
|
|
71
|
+
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.matmul_substitution import \
|
|
72
|
+
MatmulToDenseSubstitution
|
|
71
73
|
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.softmax_shift import \
|
|
72
74
|
keras_softmax_shift
|
|
73
75
|
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.batchnorm_folding import \
|
|
@@ -75,7 +77,7 @@ from model_compression_toolkit.core.keras.graph_substitutions.substitutions.batc
|
|
|
75
77
|
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.batchnorm_refusing import \
|
|
76
78
|
keras_batchnorm_refusing
|
|
77
79
|
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.linear_collapsing import \
|
|
78
|
-
keras_linear_collapsing
|
|
80
|
+
keras_linear_collapsing, keras_op2d_add_const_collapsing
|
|
79
81
|
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.residual_collapsing import \
|
|
80
82
|
keras_residual_collapsing
|
|
81
83
|
from model_compression_toolkit.core.keras.graph_substitutions.substitutions.input_scaling import InputScaling, \
|
|
@@ -260,6 +262,7 @@ class KerasImplementation(FrameworkImplementation):
|
|
|
260
262
|
|
|
261
263
|
"""
|
|
262
264
|
return [SeparableConvDecomposition(),
|
|
265
|
+
MatmulToDenseSubstitution(),
|
|
263
266
|
MultiHeadAttentionDecomposition(),
|
|
264
267
|
ActivationDecomposition(),
|
|
265
268
|
DwconvToConv()]
|
|
@@ -311,6 +314,12 @@ class KerasImplementation(FrameworkImplementation):
|
|
|
311
314
|
"""
|
|
312
315
|
return keras_linear_collapsing()
|
|
313
316
|
|
|
317
|
+
def get_op2d_add_const_collapsing_substitution(self) -> common.BaseSubstitution:
|
|
318
|
+
"""
|
|
319
|
+
Returns: Op2d add-const collapsing substitution
|
|
320
|
+
"""
|
|
321
|
+
return keras_op2d_add_const_collapsing()
|
|
322
|
+
|
|
314
323
|
def get_substitutions_post_statistics_collection(self, quant_config: QuantizationConfig) \
|
|
315
324
|
-> List[common.BaseSubstitution]:
|
|
316
325
|
"""
|
|
@@ -289,6 +289,12 @@ class PytorchImplementation(FrameworkImplementation):
|
|
|
289
289
|
"""
|
|
290
290
|
return pytorch_linear_collapsing()
|
|
291
291
|
|
|
292
|
+
def get_op2d_add_const_collapsing_substitution(self) -> common.BaseSubstitution:
|
|
293
|
+
"""
|
|
294
|
+
Returns: None, as Op2d add-const substitution is not supported in torch yet
|
|
295
|
+
"""
|
|
296
|
+
return None
|
|
297
|
+
|
|
292
298
|
def get_substitutions_post_statistics_collection(self,
|
|
293
299
|
quant_config: QuantizationConfig) -> List[common.BaseSubstitution]:
|
|
294
300
|
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|