mct-nightly 2.0.0.20240418.439__tar.gz → 2.0.0.20240419.358__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/PKG-INFO +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/PKG-INFO +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/__init__.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/base_graph.py +2 -2
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/base_node.py +25 -8
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/functional_node.py +18 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/node_filters.py +4 -3
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/node_quantization_config.py +0 -5
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/lut_kmeans_params.py +4 -3
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/similarity_analyzer.py +2 -2
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/keras_model_builder.py +4 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_folding.py +7 -7
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/linear_collapsing.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/residual_collapsing.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_implementation.py +10 -10
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_node_prior_info.py +4 -4
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/pruning/pruning_keras_implementation.py +4 -5
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/common.py +2 -2
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/node_builder.py +28 -9
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/tf_tensor_numpy.py +5 -2
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/pytorch_model_builder.py +34 -21
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_folding.py +8 -8
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/const_holder_conv.py +2 -2
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/linear_collapsing.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +4 -4
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/residual_collapsing.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pruning/pruning_pytorch_implementation.py +8 -8
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_implementation.py +4 -5
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_node_prior_info.py +2 -2
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/fully_quantized_model_builder.py +5 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/fully_quantized_model_builder.py +9 -2
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tp_model.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tp_model.py +20 -6
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_keras.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tp_model.py +22 -8
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_keras.py +1 -1
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/LICENSE.md +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/README.md +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/SOURCES.txt +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/dependency_links.txt +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/requires.txt +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/mct_nightly.egg-info/top_level.txt +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/analyzer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/back2framework/base_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/base_substitutions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/base_collector.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/histogram_collector.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/mean_collector.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/min_max_per_channel_collector.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/collectors/statistics_collector.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/framework_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/fusion/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/fusion/layer_fusing.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/edge.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/graph_matchers.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/graph_searches.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/bipartite_graph.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/compute_graph_max_cut.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/cut.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/max_cut_astar.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/memory_element.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/memory_graph/memory_graph.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/graph/virtual_activation_weights_node.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/hessian_info_service.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/hessian_info_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/trace_hessian_calculator.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/hessian/trace_hessian_request.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/base_graph_filter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/base_matcher.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/edge_matcher.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/function.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/node_matcher.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/matchers/walk_matcher.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/memory_computation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/bit_width_setter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/configurable_quant_id.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/configurable_quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/distance_weighting.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/mixed_precision_search_manager.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/resource_utilization_data.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_aggregation_methods.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_functions_mapping.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/resource_utilization_tools/ru_methods.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/search_methods/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/search_methods/linear_programming.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/sensitivity_evaluation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/set_layer_to_bitwidth.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/mixed_precision/solution_refinement_procedure.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_builder_mode.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_collector.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/model_validation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/actions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/network_editors/edit_network.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/node_prior_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/channels_grouping.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/greedy_mask_calculator.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/base_importance_metric.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/importance_metric_factory.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/importance_metrics/lfh_importance_metric.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/per_channel_mask.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/mask/per_simd_group_mask.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/memory_calculator.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/prune_graph.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruner.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/pruning/pruning_section.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/candidate_node_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/core_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/debug_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/filter_nodes_candidates.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_fn_selection.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_fn_selection.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/error_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/outlier_filter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/power_of_two_selection.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_activations_computation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_computation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_search.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/qparams_weights_computation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/symmetric_selection.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantization_params_generation/uniform_selection.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantize_graph_weights.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantize_node.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/lut_kmeans_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/quantizers_helpers.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/quantizers/uniform_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/quantization/set_node_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/apply_bias_correction_to_graph.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/apply_second_moment_correction_to_graph.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/compute_bias_correction_of_graph.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/statistics_correction/statistics_correction.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/apply_substitutions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_folding.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/linear_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/linear_collapsing_substitution.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/residual_collapsing.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/user_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/final_config_visualizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/nn_visualizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/common/visualization/tensorboard_writer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/graph_prep_runner.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/custom_layer_validation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/default_framework_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/activation_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/dwconv_to_conv.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/input_scaling.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/matmul_substitution.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/relu_bound_to_power_of_2.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/separableconv_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/activation_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/hessian/weights_trace_hessian_calculator_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/keras_model_validation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/base_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/connectivity_handler.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/edges_merger.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/nested_model_handler.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/nodes_merger.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/nested_model/outputs_merger.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/reader/reader.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/keras/visualization/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/factory_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/float_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/instance_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/mixed_precision_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/quantized_layer_wrapper.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantization_wrapper/wrapper_quantize_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/back2framework/quantized_model_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/default_framework_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_reconstruction.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/batchnorm_refusing.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/concat_threshold_update.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_batch_norm.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/functional_layer_norm.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/multi_head_attention_decomposition.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/permute_call_method.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/remove_identity.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/reshape_with_static_shapes.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/scale_equalization.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/shift_negative_activation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/softmax_shift.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/virtual_activation_weights_composition.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/graph_substitutions/substitutions/weights_activation_split.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/activation_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/hessian/weights_trace_hessian_calculator_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_activation_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/mixed_precision/configurable_weights_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/pytorch_device_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/fake_quant_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/quantizer/lut_fake_quant.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/graph_builders.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/node_holders.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/reader/reader.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/resource_utilization_data_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/statistics_correction/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/statistics_correction/apply_second_moment_correction.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/pytorch/utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/quantization_prep_runner.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/core/runner.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/data_generation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/data_generation_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/enums.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/common/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/keras_data_generation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/keras/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/image_pipeline.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/model_info_exctractors.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/batchnorm_alignment_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/bn_layer_weighting_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/image_initilization.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/output_loss_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_functions/scheduler_step_functions.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/optimization_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/data_generation/pytorch/pytorch_data_generation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/defaultdict.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/fw_agonstic/quantization_format.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/base_keras_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/export_serialization_format.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_keras_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/fakely_quant_tflite_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/int8_tflite_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/keras_export_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/keras/mctq_keras_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/base_pytorch_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/export_serialization_format.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_onnx_pytorch_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/fakely_quant_torchscript_pytorch_exporter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_exporter/pytorch/pytorch_export_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/fw_agnostic/get_inferable_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/keras/validate_layer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/builder/node_to_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/exporter/model_wrapper/pytorch/validate_layer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_framework_implementation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_graph.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/common/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_keras_implementation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_loss.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/graph_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/base_keras_gptq_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_loss.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_pytorch_implementation.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/gptq_training.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/graph_info.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/base_pytorch_gptq_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/regularization_factory.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/soft_quantizer_reg.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/symmetric_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/soft_rounding/uniform_soft_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/gptq/runner.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/logger.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/metadata.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/keras/pruning_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/pruning/pytorch/pruning_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/keras/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/ptq/runner.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/common/qat_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/base_keras_qat_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/keras/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantization_facade.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/base_pytorch_qat_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/symmetric_lsq.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/lsq/uniform_lsq.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/quantization_builder.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/symmetric_ste.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/qat/pytorch/quantizer/ste_rounding/uniform_ste.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/immutable.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/current_tp_model.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/fusing.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/op_quantization_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/operators.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/target_platform_model_component.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/attribute_filter.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/current_tpc.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/layer_filter_params.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/operations_to_layers.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/target_platform/targetplatform2framework/target_platform_capabilities_component.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/get_target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v1_pot/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/imx500_tpc/v2_lut/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/qnnpack_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/latest/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/target_platform_capabilities.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tp_model.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_keras.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/target_platform_capabilities/tpc_models/tflite_tpc/v1/tpc_pytorch.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/base_trainable_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/constants.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/get_quantizer_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/get_quantizers.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/quant_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/common/trainable_quantizer_config.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/base_keras_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/config_serialization.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/load_model.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/quantize_wrapper.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/keras/quantizer_utils.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/pytorch/__init__.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/model_compression_toolkit/trainable_infrastructure/pytorch/base_pytorch_quantizer.py +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/setup.cfg +0 -0
- {mct-nightly-2.0.0.20240418.439 → mct-nightly-2.0.0.20240419.358}/setup.py +0 -0
|
@@ -27,4 +27,4 @@ from model_compression_toolkit import data_generation
|
|
|
27
27
|
from model_compression_toolkit import pruning
|
|
28
28
|
from model_compression_toolkit.trainable_infrastructure.keras.load_model import keras_load_quantized_model
|
|
29
29
|
|
|
30
|
-
__version__ = "2.0.0.
|
|
30
|
+
__version__ = "2.0.0.20240419.000358"
|
|
@@ -98,8 +98,8 @@ class Graph(nx.MultiDiGraph, GraphSearches):
|
|
|
98
98
|
tpc_layers = tpc.op_sets_to_layers.get_layers()
|
|
99
99
|
tpc_filtered_layers = [layer for layer in tpc_layers if isinstance(layer, LayerFilterParams)]
|
|
100
100
|
for n in self.nodes:
|
|
101
|
-
is_node_in_tpc = n.
|
|
102
|
-
|
|
101
|
+
is_node_in_tpc = any([n.is_match_type(_type) for _type in tpc_layers]) or \
|
|
102
|
+
any([n.is_match_filter_params(filtered_layer) for filtered_layer in tpc_filtered_layers])
|
|
103
103
|
if n.is_custom:
|
|
104
104
|
if not is_node_in_tpc:
|
|
105
105
|
Logger.critical(f'MCT does not support optimizing Keras custom layers. Found a layer of type {n.type}. '
|
|
@@ -151,7 +151,21 @@ class BaseNode:
|
|
|
151
151
|
"""
|
|
152
152
|
return self.reuse or self.reuse_group is not None
|
|
153
153
|
|
|
154
|
-
def
|
|
154
|
+
def _get_weight_name(self, name: Union[str, int]) -> List[Union[str, int]]:
|
|
155
|
+
"""
|
|
156
|
+
Get weight names that match argument name (either string weights or integer for
|
|
157
|
+
positional weights).
|
|
158
|
+
Args:
|
|
159
|
+
name: weight name
|
|
160
|
+
|
|
161
|
+
Returns:
|
|
162
|
+
A list of weight names that match input "name"
|
|
163
|
+
|
|
164
|
+
"""
|
|
165
|
+
return [k for k in self.weights.keys()
|
|
166
|
+
if (isinstance(k, int) and name == k) or (isinstance(k, str) and name in k)]
|
|
167
|
+
|
|
168
|
+
def get_weights_by_keys(self, name: Union[str, int]) -> np.ndarray:
|
|
155
169
|
"""
|
|
156
170
|
Get a node's weight by its name.
|
|
157
171
|
Args:
|
|
@@ -163,7 +177,7 @@ class BaseNode:
|
|
|
163
177
|
if name is None:
|
|
164
178
|
return None
|
|
165
179
|
|
|
166
|
-
res =
|
|
180
|
+
res = self._get_weight_name(name)
|
|
167
181
|
if len(res) == 1: # Make sure there are no duplicates
|
|
168
182
|
return self.weights[res[0]]
|
|
169
183
|
else:
|
|
@@ -179,7 +193,7 @@ class BaseNode:
|
|
|
179
193
|
|
|
180
194
|
"""
|
|
181
195
|
|
|
182
|
-
res =
|
|
196
|
+
res = self._get_weight_name(name)
|
|
183
197
|
if len(res) == 1:
|
|
184
198
|
self.weights[res[0]] = tensor
|
|
185
199
|
else: # Add if not exist
|
|
@@ -552,14 +566,17 @@ class BaseNode:
|
|
|
552
566
|
for fl, qco in tpc.filterlayer2qco.items():
|
|
553
567
|
if self.is_match_filter_params(fl):
|
|
554
568
|
return qco
|
|
555
|
-
|
|
556
|
-
|
|
569
|
+
# Extract qco with is_match_type to overcome mismatch of function types in TF 2.15
|
|
570
|
+
matching_qcos = [_qco for _type, _qco in tpc.layer2qco.items() if self.is_match_type(_type)]
|
|
571
|
+
if matching_qcos:
|
|
572
|
+
if len(matching_qcos) > 1:
|
|
573
|
+
Logger.error('Found duplicate qco types!')
|
|
574
|
+
return matching_qcos[0]
|
|
557
575
|
return tpc.tp_model.default_qco
|
|
558
576
|
|
|
559
577
|
def is_match_type(self, _type: Type) -> bool:
|
|
560
578
|
"""
|
|
561
|
-
Check if input type matches the node type, either in instance type or in type name.
|
|
562
|
-
name string is required because of function types changes that occurred in TF 2.15.
|
|
579
|
+
Check if input type matches the node type, either in instance type or in type name.
|
|
563
580
|
|
|
564
581
|
Args:
|
|
565
582
|
_type: other node type
|
|
@@ -567,7 +584,7 @@ class BaseNode:
|
|
|
567
584
|
Whether _type matches the self node type
|
|
568
585
|
|
|
569
586
|
"""
|
|
570
|
-
return _type == self.type
|
|
587
|
+
return _type == self.type
|
|
571
588
|
|
|
572
589
|
def is_match_filter_params(self, layer_filter_params: LayerFilterParams) -> bool:
|
|
573
590
|
"""
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
from typing import Dict, Any, Tuple,
|
|
1
|
+
from typing import Dict, Any, Tuple, Type
|
|
2
2
|
|
|
3
|
+
from model_compression_toolkit.constants import FOUND_TF
|
|
3
4
|
from model_compression_toolkit.core.common.graph.base_node import BaseNode
|
|
4
5
|
import numpy as np
|
|
5
6
|
|
|
@@ -71,3 +72,19 @@ class FunctionalNode(BaseNode):
|
|
|
71
72
|
:return: the node's functional_op
|
|
72
73
|
"""
|
|
73
74
|
return self.functional_op
|
|
75
|
+
|
|
76
|
+
def is_match_type(self, _type: Type) -> bool:
|
|
77
|
+
"""
|
|
78
|
+
Check if input type matches the node type, either in instance type or in type name. Checking the
|
|
79
|
+
name string is required because of function types changes that occurred in TF 2.15, because it
|
|
80
|
+
changes the "function" attribute object (e.g. a different tf.add function that will fail the
|
|
81
|
+
equal operation).
|
|
82
|
+
|
|
83
|
+
Args:
|
|
84
|
+
_type: other node type
|
|
85
|
+
Returns:
|
|
86
|
+
Whether _type matches the self node type
|
|
87
|
+
|
|
88
|
+
"""
|
|
89
|
+
names_match = _type.__name__ == self.type.__name__ if FOUND_TF else False
|
|
90
|
+
return super().is_match_type(_type) or names_match
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
from typing import Any
|
|
17
17
|
from model_compression_toolkit.core.common.matchers.node_matcher import BaseNodeMatcher
|
|
18
|
+
from model_compression_toolkit.core.common.graph.base_node import BaseNode
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class NodeTypeFilter(BaseNodeMatcher):
|
|
@@ -30,7 +31,7 @@ class NodeTypeFilter(BaseNodeMatcher):
|
|
|
30
31
|
"""
|
|
31
32
|
self.node_type = node_type
|
|
32
33
|
|
|
33
|
-
def apply(self, input_object:
|
|
34
|
+
def apply(self, input_object: BaseNode) -> bool:
|
|
34
35
|
"""
|
|
35
36
|
Check if input_object is of the type that NodeTypeFilter contains.
|
|
36
37
|
|
|
@@ -38,9 +39,9 @@ class NodeTypeFilter(BaseNodeMatcher):
|
|
|
38
39
|
input_object: Node object to check for its type.
|
|
39
40
|
|
|
40
41
|
Returns:
|
|
41
|
-
True if the node
|
|
42
|
+
True if the node is of the type that was passed during the initialization of NodeTypeFilter.
|
|
42
43
|
"""
|
|
43
|
-
if input_object.
|
|
44
|
+
if input_object.is_match_type(self.node_type):
|
|
44
45
|
return True
|
|
45
46
|
|
|
46
47
|
|
|
@@ -265,8 +265,6 @@ class WeightsAttrQuantizationConfig:
|
|
|
265
265
|
self.enable_weights_quantization = weights_attr_cfg.enable_weights_quantization
|
|
266
266
|
self.l_p_value = qc.l_p_value
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
|
|
270
268
|
@property
|
|
271
269
|
def weights_error_method(self) -> QuantizationErrorMethod:
|
|
272
270
|
"""
|
|
@@ -412,9 +410,6 @@ class NodeWeightsQuantizationConfig(BaseNodeQuantizationConfig):
|
|
|
412
410
|
for attr in node_attrs_list:
|
|
413
411
|
if isinstance(attr, int):
|
|
414
412
|
# this is a positional attribute, so it needs to be handled separately.
|
|
415
|
-
# we assume that a positional attribute is quantized with the default configuration provided in the TPC.
|
|
416
|
-
if op_cfg.default_weight_attr_config.enable_weights_quantization:
|
|
417
|
-
Logger.critical(f"Quantizing constant weights is not supported.")
|
|
418
413
|
self.pos_attributes_config_mapping[attr] = WeightsAttrQuantizationConfig(qc=qc,
|
|
419
414
|
weights_attr_cfg=op_cfg.default_weight_attr_config,
|
|
420
415
|
weights_channels_axis=weights_channels_axis)
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
|
|
16
|
+
from typing import Dict
|
|
16
17
|
import numpy as np
|
|
17
18
|
from sklearn.cluster import KMeans
|
|
18
19
|
|
|
@@ -38,10 +39,10 @@ def lut_kmeans_tensor(tensor_data: np.ndarray,
|
|
|
38
39
|
n_iter: int = 10,
|
|
39
40
|
min_threshold: float = MIN_THRESHOLD,
|
|
40
41
|
quant_error_method: qc.QuantizationErrorMethod = None,
|
|
41
|
-
is_symmetric=False,
|
|
42
|
+
is_symmetric: bool = False,
|
|
42
43
|
node=None,
|
|
43
44
|
hessian_info_service: HessianInfoService = None,
|
|
44
|
-
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) ->
|
|
45
|
+
num_hessian_samples: int = NUM_QPARAM_HESSIAN_SAMPLES) -> Dict:
|
|
45
46
|
"""
|
|
46
47
|
The quantizer first finds the closest max value per channel of tensor_data.
|
|
47
48
|
Now, we divide tensor_data with the threshold vector per channel. In addition, we scale the result to the range
|
|
@@ -101,7 +102,7 @@ def lut_kmeans_histogram(bins: np.ndarray,
|
|
|
101
102
|
constrained: bool = True,
|
|
102
103
|
n_iter: int = 20,
|
|
103
104
|
min_threshold: float = MIN_THRESHOLD,
|
|
104
|
-
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE) ->
|
|
105
|
+
quant_error_method: qc.QuantizationErrorMethod = qc.QuantizationErrorMethod.MSE) -> Dict:
|
|
105
106
|
"""
|
|
106
107
|
Finds quantization cluster points for non-uniform activation quantization.
|
|
107
108
|
The quantizer first finds the closest power-of-two number to the max value of the given histogram,
|
|
@@ -235,7 +235,7 @@ def compute_kl_divergence(float_tensor: np.ndarray, fxp_tensor: np.ndarray, batc
|
|
|
235
235
|
axis: int = None) -> float:
|
|
236
236
|
"""
|
|
237
237
|
Compute the similarity between two tensor using KL-divergence.
|
|
238
|
-
The returned values is between 0
|
|
238
|
+
The returned values is between 0 and 1: the smaller returned value,
|
|
239
239
|
the greater similarity there is between the two tensors.
|
|
240
240
|
|
|
241
241
|
Args:
|
|
@@ -257,6 +257,6 @@ def compute_kl_divergence(float_tensor: np.ndarray, fxp_tensor: np.ndarray, batc
|
|
|
257
257
|
non_zero_fxp_tensor[non_zero_fxp_tensor == 0] = EPS
|
|
258
258
|
|
|
259
259
|
prob_distance = np.where(float_flat != 0, float_flat * np.log(float_flat / non_zero_fxp_tensor), 0)
|
|
260
|
-
# The sum is part of the KL-
|
|
260
|
+
# The sum is part of the KL-Divergence function.
|
|
261
261
|
# The mean is to aggregate the distance between each output probability vectors.
|
|
262
262
|
return np.mean(np.sum(prob_distance, axis=-1), axis=-1)
|
|
@@ -39,6 +39,7 @@ from model_compression_toolkit.core.common import BaseNode
|
|
|
39
39
|
from model_compression_toolkit.core.common.graph.edge import EDGE_SINK_INDEX
|
|
40
40
|
from model_compression_toolkit.core.keras.back2framework.instance_builder import OperationHandler
|
|
41
41
|
from model_compression_toolkit.core.keras.reader.connectivity_handler import OutTensor
|
|
42
|
+
from mct_quantizers import KerasQuantizationWrapper
|
|
42
43
|
|
|
43
44
|
# In tf2.3 fake quant node is implemented as TensorFlowOpLayer, while in tf2.4 as TFOpLambda.
|
|
44
45
|
FQ_NODE_OP_V2_3 = 'FakeQuantWithMinMaxVars'
|
|
@@ -270,7 +271,9 @@ class KerasModelBuilder(BaseModelBuilder):
|
|
|
270
271
|
out_tensors_of_n_float)
|
|
271
272
|
else:
|
|
272
273
|
input_tensors = [tensor for tensor_list in input_tensors for tensor in tensor_list] # flat list of lists
|
|
273
|
-
|
|
274
|
+
if not isinstance(op_func, KerasQuantizationWrapper):
|
|
275
|
+
# The KerasQuantizationWrapper will insert the quantized positional weights internally.
|
|
276
|
+
input_tensors = n.insert_positional_weights_to_input_list(input_tensors)
|
|
274
277
|
# Build a functional node using its args
|
|
275
278
|
if isinstance(n, FunctionalNode):
|
|
276
279
|
if n.inputs_as_list: # If the first argument should be a list of tensors:
|
|
@@ -70,9 +70,9 @@ def update_kernel_for_bn_folding_fn(conv_node: BaseNode,
|
|
|
70
70
|
Returns:
|
|
71
71
|
The modified convolution node's weight/kernel/
|
|
72
72
|
"""
|
|
73
|
-
if conv_node.
|
|
73
|
+
if conv_node.is_match_type(DepthwiseConv2D):
|
|
74
74
|
kernel = kernel * weights_scale.reshape((1, 1, kernel.shape[-2], kernel.shape[-1]))
|
|
75
|
-
elif conv_node.
|
|
75
|
+
elif conv_node.is_match_type(Conv2DTranspose):
|
|
76
76
|
kernel = kernel * weights_scale.reshape((1, 1, -1, 1))
|
|
77
77
|
else:
|
|
78
78
|
kernel = kernel * weights_scale.reshape((1, 1, 1, -1))
|
|
@@ -98,10 +98,10 @@ def update_weights_for_bn_forward_folding_fn(conv_node: BaseNode,
|
|
|
98
98
|
Returns:
|
|
99
99
|
The modified convolution node's weight/kernel/
|
|
100
100
|
"""
|
|
101
|
-
if conv_node.
|
|
101
|
+
if conv_node.is_match_type(DepthwiseConv2D):
|
|
102
102
|
bias_update = kernel * bias_factor.reshape((1, 1, -1, 1))
|
|
103
103
|
kernel = kernel * weights_scale.reshape((1, 1, -1, 1))
|
|
104
|
-
elif conv_node.
|
|
104
|
+
elif conv_node.is_match_type(Conv2DTranspose):
|
|
105
105
|
bias_update = (kernel * bias_factor.reshape((1, 1, 1, -1))).sum(3)
|
|
106
106
|
kernel = kernel * weights_scale.reshape((1, 1, 1, -1))
|
|
107
107
|
else:
|
|
@@ -133,7 +133,7 @@ def is_group_conv_fn(node: BaseNode) -> bool:
|
|
|
133
133
|
Returns:
|
|
134
134
|
True if the node is a group convolution, else False
|
|
135
135
|
"""
|
|
136
|
-
return (node.
|
|
136
|
+
return (node.is_match_type(Conv2D)) and node.framework_attr[GROUPS] > 1
|
|
137
137
|
|
|
138
138
|
|
|
139
139
|
def get_foldable_node_type_and_validity_fn(node: BaseNode) -> [bool, bool]:
|
|
@@ -147,8 +147,8 @@ def get_foldable_node_type_and_validity_fn(node: BaseNode) -> [bool, bool]:
|
|
|
147
147
|
is_bn: True if the node is a batch norm, else False
|
|
148
148
|
is_dw_valid: True if the node is a dw-convolution valid for folding or a batch-norm node, else False
|
|
149
149
|
"""
|
|
150
|
-
is_bn = node.
|
|
151
|
-
is_dw = node.
|
|
150
|
+
is_bn = node.is_match_type(BatchNormalization)
|
|
151
|
+
is_dw = node.is_match_type(DepthwiseConv2D)
|
|
152
152
|
is_dw_valid = is_dw and np.all(np.array(node.get_weights_by_keys(DEPTHWISE_KERNEL).shape[:2]) == 1)
|
|
153
153
|
return is_bn, is_dw_valid
|
|
154
154
|
|
|
@@ -58,7 +58,7 @@ def conv2d_collapsing_fn(first_node: BaseNode,
|
|
|
58
58
|
Returns:
|
|
59
59
|
The modified layer node's weights: kernel, bias
|
|
60
60
|
"""
|
|
61
|
-
if first_node.
|
|
61
|
+
if first_node.is_match_type(Conv2D) and second_node.is_match_type(Conv2D):
|
|
62
62
|
# Get nodes attributes
|
|
63
63
|
kernel1 = first_node.get_weights_by_keys(kernel_str)
|
|
64
64
|
kernel2 = second_node.get_weights_by_keys(kernel_str)
|
|
@@ -49,7 +49,7 @@ def residual_collapsing_fn(first_node: BaseNode,
|
|
|
49
49
|
Returns:
|
|
50
50
|
The modified layer node's weights: kernel
|
|
51
51
|
"""
|
|
52
|
-
if first_node.
|
|
52
|
+
if first_node.is_match_type(Conv2D):
|
|
53
53
|
# Get nodes attributes
|
|
54
54
|
kernel = first_node.get_weights_by_keys(kernel_str)
|
|
55
55
|
(kH, kW, Cin, Cout) = kernel.shape
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
from functools import partial
|
|
16
|
-
from typing import List, Any, Tuple, Callable, Dict
|
|
16
|
+
from typing import List, Any, Tuple, Callable, Dict, Union
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
import tensorflow as tf
|
|
@@ -412,12 +412,13 @@ class KerasImplementation(FrameworkImplementation):
|
|
|
412
412
|
Returns: True if the node should be considered an interest point, False otherwise.
|
|
413
413
|
"""
|
|
414
414
|
|
|
415
|
-
if node.
|
|
415
|
+
if node.is_match_type(Activation):
|
|
416
416
|
node_type_name = node.framework_attr[keras_constants.ACTIVATION]
|
|
417
417
|
if node_type_name in [keras_constants.SOFTMAX, keras_constants.SIGMOID]:
|
|
418
418
|
return True
|
|
419
|
-
elif node.
|
|
420
|
-
|
|
419
|
+
elif any([node.is_match_type(_type) for _type in [tf.nn.softmax, tf.keras.layers.Softmax, tf.nn.sigmoid, Conv2D,
|
|
420
|
+
DepthwiseConv2D, Conv2DTranspose, Dense, Concatenate, tf.concat,
|
|
421
|
+
Add, tf.add]]):
|
|
421
422
|
return True
|
|
422
423
|
|
|
423
424
|
return False
|
|
@@ -529,18 +530,18 @@ class KerasImplementation(FrameworkImplementation):
|
|
|
529
530
|
kernel_shape = node.get_weights_by_keys(fw_info.get_kernel_op_attributes(node.type)[0]).shape
|
|
530
531
|
output_channel_axis, input_channel_axis = fw_info.kernel_channels_mapping.get(node.type)
|
|
531
532
|
|
|
532
|
-
if node.
|
|
533
|
+
if node.is_match_type(Conv2D) or node.is_match_type(Conv2DTranspose):
|
|
533
534
|
# (C_out * W_out * H_out) * C_in * (W_kernel * H_kernel)
|
|
534
535
|
return np.prod([x for x in output_shape if x is not None]) * \
|
|
535
536
|
kernel_shape[input_channel_axis] * \
|
|
536
537
|
(kernel_shape[0] * kernel_shape[1])
|
|
537
|
-
elif node.
|
|
538
|
+
elif node.is_match_type(DepthwiseConv2D):
|
|
538
539
|
# Depth * (W_out * H_out) * C_in * (W_kernel * H_kernel)
|
|
539
540
|
return node.framework_attr.get(DEPTH_MULTIPLIER) * \
|
|
540
541
|
np.prod([x for x in output_shape if x is not None]) / output_shape[output_channel_axis] * \
|
|
541
542
|
kernel_shape[input_channel_axis] * \
|
|
542
543
|
(kernel_shape[0] * kernel_shape[1])
|
|
543
|
-
elif node.
|
|
544
|
+
elif node.is_match_type(Dense):
|
|
544
545
|
# IN * OUT
|
|
545
546
|
return kernel_shape[0] * kernel_shape[1]
|
|
546
547
|
else:
|
|
@@ -593,10 +594,9 @@ class KerasImplementation(FrameworkImplementation):
|
|
|
593
594
|
Returns:
|
|
594
595
|
weight_quantizers: A dictionary between a weight's name to its quantizer.
|
|
595
596
|
activation_quantizers: A list of activations quantization, one for each layer output.
|
|
596
|
-
|
|
597
597
|
"""
|
|
598
598
|
|
|
599
|
-
def _weight_name(w: str) -> str:
|
|
599
|
+
def _weight_name(w: Union[str, int]) -> Union[str, int]:
|
|
600
600
|
"""
|
|
601
601
|
Extracts the weight name from the full TensorFlow variable name.
|
|
602
602
|
|
|
@@ -609,7 +609,7 @@ class KerasImplementation(FrameworkImplementation):
|
|
|
609
609
|
Extracted weight name.
|
|
610
610
|
"""
|
|
611
611
|
|
|
612
|
-
return w.split(':')[0].split('/')[-1]
|
|
612
|
+
return w.split(':')[0].split('/')[-1] if isinstance(w, str) else w
|
|
613
613
|
|
|
614
614
|
attribute_names = [_weight_name(wn) for wn in node.get_node_weights_attributes()
|
|
615
615
|
if node.is_weights_quantization_enabled(wn)]
|
|
@@ -56,13 +56,13 @@ def _get_min_max_outputs(node: BaseNode,
|
|
|
56
56
|
"""
|
|
57
57
|
min_output, max_output = None, None
|
|
58
58
|
|
|
59
|
-
if node.
|
|
59
|
+
if node.is_match_type(ReLU):
|
|
60
60
|
min_output = node.framework_attr[THRESHOLD] if node.framework_attr[NEGATIVE_SLOPE] == 0 else None
|
|
61
61
|
|
|
62
62
|
elif fw_info.layers_has_min_max(node.type):
|
|
63
63
|
min_output, max_output = fw_info.layer_min_max_mapping[node.type]
|
|
64
64
|
|
|
65
|
-
elif node.
|
|
65
|
+
elif node.is_match_type(Activation) and fw_info.activation_has_min_max(node.framework_attr[ACTIVATION]):
|
|
66
66
|
min_output, max_output = fw_info.activation_min_max_mapping[node.framework_attr[ACTIVATION]]
|
|
67
67
|
|
|
68
68
|
return min_output, max_output
|
|
@@ -82,7 +82,7 @@ def _get_mean_std_outputs(node: BaseNode,
|
|
|
82
82
|
"""
|
|
83
83
|
mean_output, std_output = None, None
|
|
84
84
|
|
|
85
|
-
if node.
|
|
85
|
+
if node.is_match_type(BatchNormalization):
|
|
86
86
|
mean_output = node.get_weights_by_keys(BETA)
|
|
87
87
|
if node.get_weights_by_keys(GAMMA) is None:
|
|
88
88
|
std_output = 1.0
|
|
@@ -92,7 +92,7 @@ def _get_mean_std_outputs(node: BaseNode,
|
|
|
92
92
|
mean_output = 0.0
|
|
93
93
|
else:
|
|
94
94
|
next_node_list = graph.get_next_nodes(node)
|
|
95
|
-
bn_nodes = [bn_node for bn_node in next_node_list if bn_node.
|
|
95
|
+
bn_nodes = [bn_node for bn_node in next_node_list if bn_node.is_match_type(BatchNormalization)]
|
|
96
96
|
if len(bn_nodes) != 0:
|
|
97
97
|
bn_node = bn_nodes[0]
|
|
98
98
|
moving_variance = bn_node.get_weights_by_keys(MOVING_VARIANCE)
|
|
@@ -209,10 +209,9 @@ def _is_keras_node_pruning_section_edge(node: BaseNode) -> bool:
|
|
|
209
209
|
"""
|
|
210
210
|
|
|
211
211
|
# Check if the node is a Conv2D or Conv2DTranspose layer with groups set to 1.
|
|
212
|
-
if node.
|
|
212
|
+
if node.is_match_type(keras.layers.Conv2D) or node.is_match_type(keras.layers.Conv2DTranspose):
|
|
213
213
|
return node.framework_attr[GROUPS] == 1
|
|
214
|
-
return node.
|
|
215
|
-
|
|
214
|
+
return node.is_match_type(keras.layers.Dense)
|
|
216
215
|
|
|
217
216
|
|
|
218
217
|
def _prune_keras_edge_node(node: BaseNode,
|
|
@@ -250,9 +249,9 @@ def _prune_keras_edge_node(node: BaseNode,
|
|
|
250
249
|
|
|
251
250
|
if not is_exit_node:
|
|
252
251
|
# Update 'filters' or 'units' attributes for entry node Conv2D/Conv2DTranspose layers.
|
|
253
|
-
if node.
|
|
252
|
+
if node.is_match_type(keras.layers.Conv2D) or node.is_match_type(keras.layers.Conv2DTranspose):
|
|
254
253
|
node.framework_attr[FILTERS] = int(np.sum(mask))
|
|
255
|
-
elif node.
|
|
254
|
+
elif node.is_match_type(keras.layers.Dense):
|
|
256
255
|
node.framework_attr[UNITS] = int(np.sum(mask))
|
|
257
256
|
|
|
258
257
|
if is_exit_node:
|
|
@@ -43,7 +43,7 @@ def is_node_an_input_layer(node: BaseNode) -> bool:
|
|
|
43
43
|
Whether the node represents an input layer or not.
|
|
44
44
|
"""
|
|
45
45
|
if isinstance(node, BaseNode):
|
|
46
|
-
return node.
|
|
46
|
+
return node.is_match_type(InputLayer)
|
|
47
47
|
elif isinstance(node, KerasNode):
|
|
48
48
|
return isinstance(node.layer, InputLayer)
|
|
49
49
|
else:
|
|
@@ -60,7 +60,7 @@ def is_node_a_model(node: BaseNode) -> bool:
|
|
|
60
60
|
Whether the node represents a Keras model or not.
|
|
61
61
|
"""
|
|
62
62
|
if isinstance(node, BaseNode):
|
|
63
|
-
return node.
|
|
63
|
+
return node.is_match_type(Functional) or node.is_match_type(Sequential)
|
|
64
64
|
elif isinstance(node, KerasNode):
|
|
65
65
|
return isinstance(node.layer, Functional) or isinstance(node.layer, Sequential)
|
|
66
66
|
else:
|
|
@@ -41,7 +41,7 @@ layers = keras.layers
|
|
|
41
41
|
|
|
42
42
|
REUSED_IDENTIFIER = '_reused_'
|
|
43
43
|
|
|
44
|
-
is_const = lambda x: isinstance(x, (tf.Variable, tf.Tensor, np.ndarray))
|
|
44
|
+
is_const = lambda x: isinstance(x, (tf.Variable, tf.Tensor, np.ndarray, float))
|
|
45
45
|
is_tensor = lambda x: isinstance(x, KerasTensor)
|
|
46
46
|
|
|
47
47
|
|
|
@@ -61,18 +61,36 @@ def get_kwargs2index(tfoplambda_layer: TFOpLambda) -> Dict[str, int]:
|
|
|
61
61
|
"""
|
|
62
62
|
Positional weights are saved according to their index in the node's call arguments, so
|
|
63
63
|
need to know the function arguments' names in case the weights are in the kwargs.
|
|
64
|
+
|
|
65
|
+
Note: the kwargs2index dictionary is initialized manually (and not with tf_inspect) so
|
|
66
|
+
it will only include the arguments that may contain constants. For example, we don't
|
|
67
|
+
want the transpose_a attribute of tf.matmul to be saved as a constant.
|
|
68
|
+
|
|
69
|
+
Every operation we add support to, needs to be added here.
|
|
70
|
+
|
|
64
71
|
Args:
|
|
65
72
|
tfoplambda_layer: TFOpLambda layer.
|
|
66
73
|
|
|
67
74
|
Returns:
|
|
68
75
|
A dictionary with argument number and index: {arg_name: arg_index}.
|
|
69
76
|
"""
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
kwargs2index = {tf.add: {'x': 0, 'y': 1},
|
|
78
|
+
tf.subtract: {'x': 0, 'y': 1},
|
|
79
|
+
tf.divide: {'x': 0, 'y': 1},
|
|
80
|
+
tf.truediv: {'x': 0, 'y': 1},
|
|
81
|
+
tf.multiply: {'x': 0, 'y': 1},
|
|
82
|
+
tf.pow: {'x': 0, 'y': 1},
|
|
83
|
+
tf.matmul: {'a': 0, 'b': 1}}.get(tfoplambda_layer.function)
|
|
84
|
+
if not kwargs2index:
|
|
85
|
+
# In TF 2.15 the function attribute is different and doesn't match the original
|
|
86
|
+
# operation object we use. Therefore, we extract kwargs2index with the symbol.
|
|
87
|
+
kwargs2index = {'__operators__.add': {'x': 0, 'y': 1},
|
|
88
|
+
'math.add': {'x': 0, 'y': 1},
|
|
89
|
+
'math.multiply': {'x': 0, 'y': 1},
|
|
90
|
+
'linalg.matmul': {'a': 0, 'b': 1},
|
|
91
|
+
'concat': {'values': 0}}.get(tfoplambda_layer.symbol, {})
|
|
92
|
+
|
|
93
|
+
return kwargs2index
|
|
76
94
|
|
|
77
95
|
|
|
78
96
|
def build_node(node: KerasNode,
|
|
@@ -154,8 +172,9 @@ def build_node(node: KerasNode,
|
|
|
154
172
|
if is_const(v) or (keras_layer.function in [tf.add, tf.multiply, tf.subtract, tf.divide, tf.truediv, tf.pow,
|
|
155
173
|
tf.matmul] and
|
|
156
174
|
isinstance(v, (tuple, list))):
|
|
157
|
-
|
|
158
|
-
|
|
175
|
+
if k in kwarg2index:
|
|
176
|
+
weights.update({kwarg2index[k]: to_numpy(v, is_single_tensor=True)})
|
|
177
|
+
weight_keys.append(k)
|
|
159
178
|
# remove weights and KerasTensors and weights from op_call_kwargs
|
|
160
179
|
op_call_kwargs = {k: v for k, v in op_call_kwargs.items()
|
|
161
180
|
if not (kwarg2index.get(k) in weights or is_tensor(v))}
|
|
@@ -40,7 +40,7 @@ def to_tf_tensor(tensor):
|
|
|
40
40
|
Logger.critical(f'Unsupported type for conversion to TF tensor: {type(tensor)}.')
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
def tf_tensor_to_numpy(tensor: Union[List, Tuple, np.ndarray, tf.Tensor],
|
|
43
|
+
def tf_tensor_to_numpy(tensor: Union[List, Tuple, np.ndarray, tf.Tensor, float],
|
|
44
44
|
is_single_tensor=False) -> np.ndarray:
|
|
45
45
|
"""
|
|
46
46
|
Convert a TF tensor to a Numpy array.
|
|
@@ -65,6 +65,9 @@ def tf_tensor_to_numpy(tensor: Union[List, Tuple, np.ndarray, tf.Tensor],
|
|
|
65
65
|
else:
|
|
66
66
|
return (tf_tensor_to_numpy(t) for t in tensor)
|
|
67
67
|
elif isinstance(tensor, tf.Tensor):
|
|
68
|
-
|
|
68
|
+
np_tensor = tensor.numpy()
|
|
69
|
+
return np.array([np_tensor]) if np.isscalar(np_tensor) else np_tensor
|
|
70
|
+
elif isinstance(tensor, float):
|
|
71
|
+
return np.array([tensor])
|
|
69
72
|
else:
|
|
70
73
|
Logger.critical(f'Unsupported type for conversion to Numpy array: {type(tensor)}.')
|