MIL Input Types
Input types supported by the Model Intermediate Language (MIL):
InputType
- class coremltools.converters.mil.input_types.InputType(name=None, shape=None, dtype=None)[source]
- __init__(name=None, shape=None, dtype=None)[source]
The input type for inputs fed into the model.
- Parameters:
- name: (str)
The name of the input.
- shape: list, tuple, Shape object, EnumeratedShapes object, or None
The shape(s) that are valid for this input. If set to
None, the shape will be inferred from the model itself.
ClassifierConfig
- class coremltools.converters.mil.input_types.ClassifierConfig(class_labels, predicted_feature_name='classLabel', predicted_probabilities_output=None)[source]
- __init__(class_labels, predicted_feature_name='classLabel', predicted_probabilities_output=None)[source]
Configuration for classifier models.
- Parameters:
- class_labels: str / list of int / list of str
If a
listis provided, thelistmaps the index of the output of a neural network to labels in a classifier.If a
stris provided, thestrpoints to a file which maps the index to labels in a classifier.
- predicted_feature_name: str
Name of the output feature for the class labels exposed in the Core ML neural network classifier. Default:
'classLabel'.- predicted_probabilities_output: str
If provided, then this is the name of the neural network blob which generates the probabilities for each class label (typically the output of a softmax layer).
If not provided, then the last output layer is assumed.
EnumeratedShapes
- class coremltools.converters.mil.input_types.EnumeratedShapes(shapes, default=None)[source]
- __init__(shapes, default=None)[source]
A shape class for setting multiple valid shapes in InputType.
- Parameters:
- shapes: list of Shape objects, or Shape-compatible lists
- default: tuple of int or None
The default shape that is used for initiating the model, and set in the metadata of the model file.
If
None, then the first element inshapesis used.
Examples
sample_shape = ct.EnumeratedShapes( shapes=[(2, 4, 64, 64), (2, 4, 48, 48), (2, 4, 32, 32)], default=(2, 4, 64, 64) ) my_core_ml_model = ct.convert( my_model, inputs=[ct.TensorType(name="sample", shape=sample_shape)], )
ImageType
- class coremltools.converters.mil.input_types.ImageType(name=None, shape=None, scale=1.0, bias=None, color_layout=ColorLayout.RGB, channel_first=None, grayscale_use_uint8=False)[source]
- __init__(name=None, shape=None, scale=1.0, bias=None, color_layout=ColorLayout.RGB, channel_first=None, grayscale_use_uint8=False)[source]
Configuration class used for image inputs in Core ML.
- Parameters:
- scale: float or list of floats
The scaling factor for all values in the image channels.
- bias: float or list of floats
If
color_layoutisct.colorlayout.GRAYSCALEorct.colorlayout.GRAYSCALE_FLOAT16, bias would be afloat.If
color_layoutisct.colorlayout.RGBorct.colorlayout.BGR, bias would be a list offloat.
- color_layout: string or enumeration of type ``ct.colorlayout``
Color layout of the image. Valid values are as follows:
- Enumeration (recommended):
ct.colorlayout.RGBct.colorlayout.BGRct.colorlayout.GRAYSCALEct.colorlayout.GRAYSCALE_FLOAT16
- String values (older way to specify):
'G': Grayscale (maps toct.colorlayout.GRAYSCALE)'RGB': [Red, Green, Blue] (maps toct.colorlayout.BGR)'BGR': [Blue, Green, Red] (maps toct.colorlayout.RGB)
- channel_first: (bool) or None
Set to
Trueif input format is channel first.- Default format:
For TensorFlow: channel last (
channel_first=False).For PyTorch: channel first (
channel_first=True).
- grayscale_use_uint8: (bool)
Only applicable for GRAYSCALE color layout.
Defaults to
False, in which case fp32 will be used.Using uint8 requires a
minimum_deployment_targetof iOS17 or newer.Using uint8 restricts the number of avaliable MIL ops, which can cause conversion to fail.
RangeDim
- class coremltools.converters.mil.input_types.RangeDim(lower_bound: int = 1, upper_bound: int = -1, default: int | None = None, symbol: str | None = None)[source]
- __init__(lower_bound: int = 1, upper_bound: int = -1, default: int | None = None, symbol: str | None = None)[source]
A class for providing a range of accepted shapes.
- Parameters:
- lower_bound:
The minimum valid value for the shape.
- upper_bound:
The maximum valid value for the shape.
Set to
-1if there is no upper limit (only works if backend is set to “neuralnetwork”). When backend is set to “mlprogram” during conversion, -1 is not allowed. A finite positive upper bound must be provided.- default:
The default value that is used for initiating the model, and set in the input shape field of the model file.
If set to
None,lower_boundwould be used as default.- symbol:
Optional symbol name for the dim. Autogenerate a symbol name if not specified.
Shape
- class coremltools.converters.mil.input_types.Shape(shape, default=None)[source]
- __init__(shape, default=None)[source]
The basic shape class to be set in
InputType.- Parameters:
- shape: list of (int), symbolic values, RangeDim object
The valid shape of the input.
- default: tuple of int or None
The default shape that is used for initiating the model, and set in the metadata of the model file.
If
None, thenshapeis used.
StateType
- class coremltools.converters.mil.input_types.StateType(wrapped_type: type, name: str | None = None)[source]
- __init__(wrapped_type: type, name: str | None = None)[source]
Specify a model state as a wrapper of a
TensorType. For example, you can use the following code to create a state type input that wraps a fp16 tensor with shape(2, 3):ct.StateType( wrapped_type=ct.TensorType( shape=(2, 3), dtype=np.float16 ), name="state", )
- Parameters:
- wrapped_type: coremltools.converters.mil.input_types.InputType
The type wrapped in the state.
Must be
TensorType. Note that thenameanddefault_valueof the wrappedTensorTypemust not be provided.
- name: str
The name of the state. It must match the key of
named_buffers()in the source TorchScript model.
TensorType
- class coremltools.converters.mil.input_types.TensorType(name=None, shape=None, dtype=None, default_value=None)[source]
- __init__(name=None, shape=None, dtype=None, default_value=None)[source]
Specify a (dense) tensor input.
- Parameters:
- name: str
Input name. Must match an input name in the model (usually the Placeholder name for TensorFlow or the input name for PyTorch).
The
nameis required except for a TensorFlow model in which there is exactly one input Placeholder.- shape: The shape of the input
List of positive int or
RangeDim, or
- For TensorFlow:
The
shapeis optional. If omitted, the shape is inferred from TensorFlow graph’s Placeholder shape.
- For PyTorch:
The
shapeis required.
- dtype: np.generic or mil.type type
For example,
np.int32orcoremltools.converters.mil.mil.types.fp32- default_value: np.ndarray
If provided, the input is considered optional. At runtime, if the input is not provided,
default_valueis used.- Limitations:
If
default_valueisnp.ndarray, all elements are required to have the same value.The
default_valuemay not be specified ifshapeisEnumeratedShapes.
Examples
ct.TensorType(name="input", shape=(1, 2, 3))impliesdtype == np.float32ct.TensorType(name="input", shape=(1, 2, 3), dtype=np.int32)ct.TensorType(name="input", shape=(1, 2, 3), dtype=ct.converters.mil.types.fp32)