class_docstr: Layer selector object that allows users to select matrix multiplication layers
  with one of the matrices being constant, based on some criterions like total
  numbers of parameters/weights, number of input or output channels and/or layer
  names. If any of the criterion is not valid, the corresponding layer is not
  selected.
class_docstr_tok: ["Layer","selector","object","that","allows","users","to","select","matrix","multiplication","layers","with","one","of","the","matrices","being","constant",",","based","on","some","criterions","like","total","numbers","of","parameters\/weights",",","number","of","input","or","output","channels","and\/or","layer","names",".","If","any","of","the","criterion","is","not","valid",",","the","corresponding","layer","is","not","selected","."]
code: def __init__(
      self,
      minimum_weight_count=1,
      minimum_input_channels=1,
      minimum_output_channels=1,
      maximum_input_channels=None,
      maximum_output_channels=None,
      include_layers_with_names=None,
  ):
      super(MatrixMultiplyLayerSelector, self).__init__()
  
      # weight count refers to number of parameters/weights and is equal to product of input & output channels
      self.minimum_weight_count = minimum_weight_count
      self.minimum_input_channels = minimum_input_channels
      self.minimum_output_channels = minimum_output_channels
      self.maximum_input_channels = maximum_input_channels
      self.maximum_output_channels = maximum_output_channels
      if include_layers_with_names is None:
          self.include_layers_with_names = []
  
      if not (
          isinstance(self.include_layers_with_names, (list, tuple))
          and all(
              [
                  isinstance(s, _string_types)
                  for s in self.include_layers_with_names
              ]
          )
      ):
          raise ValueError(
              "Property 'include_layers_with_names' must be a list/tuple of str objects"
          )
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import numpy
  from sys import stdout
  from os import listdir
  from six import string_types
  from .optimization_utils import _optimize_nn
  from coremltools.models import _SUPPORTED_QUANTIZATION_MODES, _QUANTIZATION_MODE_DEQUANTIZE, _QUANTIZATION_MODE_LOOKUP_TABLE_LINEAR, _QUANTIZATION_MODE_LOOKUP_TABLE_KMEANS, _QUANTIZATION_MODE_CUSTOM_LOOKUP_TABLE, _QUANTIZATION_MODE_LINEAR_QUANTIZATION, _QUANTIZATION_MODE_LINEAR_SYMMETRIC, _LUT_BASED_QUANTIZATION
  from ..utils import _get_nn_layers, _wp_to_fp16wp, _get_model, _macos_version
  from ..._deps import _HAS_SKLEARN
  from ...None import _MINIMUM_QUANTIZED_MODEL_SPEC_VERSION, _MINIMUM_FP16_SPEC_VERSION, _SPECIFICATION_VERSION_IOS_14
label_desc: Use image node_id 1 to create a new MatrixMultiplyLayerSelector object from inherited base classes: QuantizedLayerSelector with example: obj = MatrixMultiplyLayerSelector(minimum_weight_count, minimum_input_channels, minimum_output_channels, maximum_input_channels, maximum_output_channels, include_layers_with_names)