#[repr(C)]pub struct MLModel { /* private fields */ }
MLModel
only.Expand description
MLModel
Construct a model and evaluate on a specific set of input features. Inputs and outputs are accessed via the MLFeatureProvider protocol. Returns a model or nil if there is an error.
See also Apple’s documentation
Implementations§
Source§impl MLModel
impl MLModel
Sourcepub unsafe fn modelDescription(&self) -> Retained<MLModelDescription>
Available on crate feature MLModelDescription
only.
pub unsafe fn modelDescription(&self) -> Retained<MLModelDescription>
MLModelDescription
only.A model holds a description of its required inputs and expected outputs.
Sourcepub unsafe fn configuration(&self) -> Retained<MLModelConfiguration>
Available on crate feature MLModelConfiguration
only.
pub unsafe fn configuration(&self) -> Retained<MLModelConfiguration>
MLModelConfiguration
only.The load-time parameters used to instantiate this MLModel object.
Sourcepub unsafe fn modelWithContentsOfURL_error(
url: &NSURL,
) -> Result<Retained<Self>, Retained<NSError>>
pub unsafe fn modelWithContentsOfURL_error( url: &NSURL, ) -> Result<Retained<Self>, Retained<NSError>>
Construct a model with a default MLModelConfiguration object
Sourcepub unsafe fn modelWithContentsOfURL_configuration_error(
url: &NSURL,
configuration: &MLModelConfiguration,
) -> Result<Retained<Self>, Retained<NSError>>
Available on crate feature MLModelConfiguration
only.
pub unsafe fn modelWithContentsOfURL_configuration_error( url: &NSURL, configuration: &MLModelConfiguration, ) -> Result<Retained<Self>, Retained<NSError>>
MLModelConfiguration
only.Construct a model given the location of its on-disk representation. Returns nil on error.
Sourcepub unsafe fn loadContentsOfURL_configuration_completionHandler(
url: &NSURL,
configuration: &MLModelConfiguration,
handler: &DynBlock<dyn Fn(*mut MLModel, *mut NSError)>,
)
Available on crate features MLModelConfiguration
and block2
only.
pub unsafe fn loadContentsOfURL_configuration_completionHandler( url: &NSURL, configuration: &MLModelConfiguration, handler: &DynBlock<dyn Fn(*mut MLModel, *mut NSError)>, )
MLModelConfiguration
and block2
only.Construct a model asynchronously given the location of its on-disk representation and configuration.
Model loading may take time when the model content is not immediately available (e.g. encrypted model). Use this factory method especially when the caller is on the main thread.
Parameter url
: the location of its on-disk representation (.mlmodelc directory).
Parameter configuration
: The model configuration
Parameter handler
: When the model load completes successfully or unsuccessfully, the completion handler is invoked with a valid MLModel instance or NSError object.
Sourcepub unsafe fn predictionFromFeatures_error(
&self,
input: &ProtocolObject<dyn MLFeatureProvider>,
) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
Available on crate feature MLFeatureProvider
only.
pub unsafe fn predictionFromFeatures_error( &self, input: &ProtocolObject<dyn MLFeatureProvider>, ) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
MLFeatureProvider
only.Run a prediction on a model synchronously.
This is a convenience overload method of prediction(from:options:)
that uses the default prediction options.
- Parameters
- input: The input features to make a prediction from.
- error: The output parameter to be filled with error information on failure.
- Returns: The output features from the prediction.
Sourcepub unsafe fn predictionFromFeatures_options_error(
&self,
input: &ProtocolObject<dyn MLFeatureProvider>,
options: &MLPredictionOptions,
) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
Available on crate features MLFeatureProvider
and MLPredictionOptions
only.
pub unsafe fn predictionFromFeatures_options_error( &self, input: &ProtocolObject<dyn MLFeatureProvider>, options: &MLPredictionOptions, ) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
MLFeatureProvider
and MLPredictionOptions
only.Run a prediction on a model synchronously
- Parameters
- input: The input features to make a prediction from.
- options: Prediction options to modify how the prediction is run.
- error: The output parameter to be filled with error information on failure.
- Returns: The output features from the prediction.
Sourcepub unsafe fn predictionFromFeatures_completionHandler(
&self,
input: &ProtocolObject<dyn MLFeatureProvider>,
completion_handler: &DynBlock<dyn Fn(*mut ProtocolObject<dyn MLFeatureProvider>, *mut NSError)>,
)
Available on crate features MLFeatureProvider
and block2
only.
pub unsafe fn predictionFromFeatures_completionHandler( &self, input: &ProtocolObject<dyn MLFeatureProvider>, completion_handler: &DynBlock<dyn Fn(*mut ProtocolObject<dyn MLFeatureProvider>, *mut NSError)>, )
MLFeatureProvider
and block2
only.Run a prediction on a model asynchronously.
This is a convenience overload method of prediction(from:options:) async
that uses the default prediction options.
- Parameters
- input: The input features to make a prediction from.
- completionHandler: A block that will be invoked once the prediction has completed successfully or unsuccessfully. On success, it is invoked with a valid model output. On failure, it is invoked with a nil output and NSError
Sourcepub unsafe fn predictionFromFeatures_options_completionHandler(
&self,
input: &ProtocolObject<dyn MLFeatureProvider>,
options: &MLPredictionOptions,
completion_handler: &DynBlock<dyn Fn(*mut ProtocolObject<dyn MLFeatureProvider>, *mut NSError)>,
)
Available on crate features MLFeatureProvider
and MLPredictionOptions
and block2
only.
pub unsafe fn predictionFromFeatures_options_completionHandler( &self, input: &ProtocolObject<dyn MLFeatureProvider>, options: &MLPredictionOptions, completion_handler: &DynBlock<dyn Fn(*mut ProtocolObject<dyn MLFeatureProvider>, *mut NSError)>, )
MLFeatureProvider
and MLPredictionOptions
and block2
only.Run a prediction on a model asynchronously.
- Parameters
- input: The input features to make a prediction from.
- options: Prediction options to modify how the prediction is run.
- completionHandler: A block that will be invoked once the prediction has completed successfully or unsuccessfully. On success, it is invoked with a valid model output. On failure, it is invoked with a nil output and NSError
Sourcepub unsafe fn predictionsFromBatch_error(
&self,
input_batch: &ProtocolObject<dyn MLBatchProvider>,
) -> Result<Retained<ProtocolObject<dyn MLBatchProvider>>, Retained<NSError>>
Available on crate feature MLBatchProvider
only.
pub unsafe fn predictionsFromBatch_error( &self, input_batch: &ProtocolObject<dyn MLBatchProvider>, ) -> Result<Retained<ProtocolObject<dyn MLBatchProvider>>, Retained<NSError>>
MLBatchProvider
only.Batch prediction without explicit options
Sourcepub unsafe fn predictionsFromBatch_options_error(
&self,
input_batch: &ProtocolObject<dyn MLBatchProvider>,
options: &MLPredictionOptions,
) -> Result<Retained<ProtocolObject<dyn MLBatchProvider>>, Retained<NSError>>
Available on crate features MLBatchProvider
and MLPredictionOptions
only.
pub unsafe fn predictionsFromBatch_options_error( &self, input_batch: &ProtocolObject<dyn MLBatchProvider>, options: &MLPredictionOptions, ) -> Result<Retained<ProtocolObject<dyn MLBatchProvider>>, Retained<NSError>>
MLBatchProvider
and MLPredictionOptions
only.Batch prediction with explicit options
Sourcepub unsafe fn parameterValueForKey_error(
&self,
key: &MLParameterKey,
) -> Result<Retained<AnyObject>, Retained<NSError>>
Available on crate features MLKey
and MLParameterKey
only.
pub unsafe fn parameterValueForKey_error( &self, key: &MLParameterKey, ) -> Result<Retained<AnyObject>, Retained<NSError>>
MLKey
and MLParameterKey
only.Provides value for the given parameter. Returns nil on error.
Sourcepub unsafe fn loadModelAsset_configuration_completionHandler(
asset: &MLModelAsset,
configuration: &MLModelConfiguration,
handler: &DynBlock<dyn Fn(*mut MLModel, *mut NSError)>,
)
Available on crate features MLModelAsset
and MLModelConfiguration
and block2
only.
pub unsafe fn loadModelAsset_configuration_completionHandler( asset: &MLModelAsset, configuration: &MLModelConfiguration, handler: &DynBlock<dyn Fn(*mut MLModel, *mut NSError)>, )
MLModelAsset
and MLModelConfiguration
and block2
only.Construct a model asynchronously from a compiled model asset.
Parameter asset
: Compiled model asset derived from in-memory or on-disk Core ML model
Parameter configuration
: Model configuration that hold options for loading a model
Parameter handler
: When the model load completes successfully or unsuccessfully, the completion handler is invoked with a valid MLModel instance or NSError object.
Source§impl MLModel
MLComputeDevice.
MLModel (MLComputeDevice)
impl MLModel
MLComputeDevice. MLModel (MLComputeDevice)
Class with utilties for getting the available compute devices.
Sourcepub unsafe fn availableComputeDevices() -> Retained<NSArray<ProtocolObject<dyn MLComputeDeviceProtocol>>>
Available on crate features MLModel_MLComputeDevice
and MLComputeDeviceProtocol
only.
pub unsafe fn availableComputeDevices() -> Retained<NSArray<ProtocolObject<dyn MLComputeDeviceProtocol>>>
MLModel_MLComputeDevice
and MLComputeDeviceProtocol
only.The list of available compute devices for CoreML.
Use the method to get the list of compute devices that MLModel’s prediction can use.
Some compute devices on the hardware are exclusive to the domain ML frameworks such as Vision and SoundAnalysis and
not available to CoreML. See also MLComputeDevice.allComputeDevices
.
Source§impl MLModel
MLModelCompilation.
MLModel (MLModelCompilation)
impl MLModel
MLModelCompilation. MLModel (MLModelCompilation)
Class with utilties for performing .mlmodel compilation
Sourcepub unsafe fn compileModelAtURL_error(
model_url: &NSURL,
) -> Result<Retained<NSURL>, Retained<NSError>>
👎Deprecated: Use the asynchronous interface compileModelAtURL:completionHandler:error: instead.Available on crate feature MLModel_MLModelCompilation
only.
pub unsafe fn compileModelAtURL_error( model_url: &NSURL, ) -> Result<Retained<NSURL>, Retained<NSError>>
MLModel_MLModelCompilation
only.Compile a .mlmodel for this device
Parameter modelURL
: URL file path to .mlmodel file you wish to compile
Parameter error
: Any errors are surfaced here
Returns: a URL to the compiled .mlmodelc directory if successful The model is compiled to a temporary location on disk You must move the compiled model to a permanent location if you wish to keep it
The returned model can be loaded using:
[MLModel modelWithContentsOfURL:error:]
Sourcepub unsafe fn compileModelAtURL_completionHandler(
model_url: &NSURL,
handler: &DynBlock<dyn Fn(*mut NSURL, *mut NSError)>,
)
Available on crate features MLModel_MLModelCompilation
and block2
only.
pub unsafe fn compileModelAtURL_completionHandler( model_url: &NSURL, handler: &DynBlock<dyn Fn(*mut NSURL, *mut NSError)>, )
MLModel_MLModelCompilation
and block2
only.Compile a .mlmodel or .mlpackage for this device. Perform the compilation asynchronously.
Parameter modelURL
: URL file path to .mlmodel file you wish to compile
Parameter handler
: When the model compilation completes successfully the completion handler is invoked with a valid URL to the compiled .mlmodelc directory.
On failure, signified by nil compiledModelURL, the NSError object is populated.
The model is compiled to a temporary location in the file system. You must move the compiled model to a permanent location if you wish to keep it. Then the model can be loaded using the returned URL:
[MLModel modelWithContentsOfURL:error:]
Source§impl MLModel
MLState.
impl MLModel
MLState.
Sourcepub unsafe fn newState(&self) -> Retained<MLState>
Available on crate features MLModel_MLState
and MLState
only.
pub unsafe fn newState(&self) -> Retained<MLState>
MLModel_MLState
and MLState
only.Creates a new state object.
Core ML framework will allocate the state buffers declared in the model.
The allocated state buffers are initialized to zeros. To initialize with different values, use .withMultiArray(for:)
to get the mutable MLMultiArray
-view to the state buffer.
It returns an empty state when the model is stateless. One can use the empty state with stateful prediction functions such as prediction(from:using:)
and those predictions will be stateless. This simplifies the call site which may or may not use a stateful model.
// Create state that contains two state buffers: s1 and s2.
// Then, initialize s1 to 1.0 and s2 to 2.0.
let state = model.newState()
state.withMultiArray(for: "s1") { stateMultiArray in
stateMultiArray[0] = 1.0
}
state.withMultiArray(for: "s2") { stateMultiArray in
stateMultiArray[0] = 2.0
}
Sourcepub unsafe fn predictionFromFeatures_usingState_error(
&self,
input_features: &ProtocolObject<dyn MLFeatureProvider>,
state: &MLState,
) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
Available on crate features MLModel_MLState
and MLFeatureProvider
and MLState
only.
pub unsafe fn predictionFromFeatures_usingState_error( &self, input_features: &ProtocolObject<dyn MLFeatureProvider>, state: &MLState, ) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
MLModel_MLState
and MLFeatureProvider
and MLState
only.Run a stateful prediction synchronously.
Use this method to run predictions on a stateful model.
let state = model.newState()
let prediction = try model.prediction(from: inputFeatures, using: state)
- Parameters:
- inputFeatures: The input features as declared in the model description.
- state: The state object created by
newState()
method. - error: The output parameter to receive an error information on failure.
Sourcepub unsafe fn predictionFromFeatures_usingState_options_error(
&self,
input_features: &ProtocolObject<dyn MLFeatureProvider>,
state: &MLState,
options: &MLPredictionOptions,
) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
Available on crate features MLModel_MLState
and MLFeatureProvider
and MLPredictionOptions
and MLState
only.
pub unsafe fn predictionFromFeatures_usingState_options_error( &self, input_features: &ProtocolObject<dyn MLFeatureProvider>, state: &MLState, options: &MLPredictionOptions, ) -> Result<Retained<ProtocolObject<dyn MLFeatureProvider>>, Retained<NSError>>
MLModel_MLState
and MLFeatureProvider
and MLPredictionOptions
and MLState
only.Run a stateful prediction synchronously with options.
Use this method to run predictions on a stateful model.
let state = model.newState()
let prediction = try model.prediction(from: inputFeatures, using: state, options: predictionOptions)
- Parameters:
- inputFeatures: The input features as declared in the model description.
- state: The state object created by
newState()
method. - options: The prediction options.
- error: The output parameter to receive an error information on failure.
Sourcepub unsafe fn predictionFromFeatures_usingState_options_completionHandler(
&self,
input_features: &ProtocolObject<dyn MLFeatureProvider>,
state: &MLState,
options: &MLPredictionOptions,
completion_handler: &DynBlock<dyn Fn(*mut ProtocolObject<dyn MLFeatureProvider>, *mut NSError)>,
)
Available on crate features MLModel_MLState
and MLFeatureProvider
and MLPredictionOptions
and MLState
and block2
only.
pub unsafe fn predictionFromFeatures_usingState_options_completionHandler( &self, input_features: &ProtocolObject<dyn MLFeatureProvider>, state: &MLState, options: &MLPredictionOptions, completion_handler: &DynBlock<dyn Fn(*mut ProtocolObject<dyn MLFeatureProvider>, *mut NSError)>, )
MLModel_MLState
and MLFeatureProvider
and MLPredictionOptions
and MLState
and block2
only.Run a stateful prediction asynchronously.
Use this method to run predictions on a stateful model.
Do not request a prediction while another prediction that shares the same state is in-flight, otherwise the behavior is undefined.
let state = model.newState()
let prediction = try await model.prediction(from: inputFeatures, using: state)
- Parameters
- input: The input features to make a prediction from.
- state: The state object created by
newState()
method. - options: Prediction options to modify how the prediction is run.
- completionHandler: A block that will be invoked once the prediction has completed successfully or unsuccessfully. On success, it is invoked with a valid model output. On failure, it is invoked with a nil output and NSError
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init
/new
methods).
§Example
Check that an instance of NSObject
has the precise class NSObject
.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load
instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load
instead.Use Ivar::load
instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T
.
See Ivar::load_ptr
for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T
.
This is the reference-variant. Use Retained::downcast
if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString
.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString
to a NSMutableString
,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass:
for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject
.
§Panics
This works internally by calling isKindOfClass:
. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject
and
NSProxy
implement this method.
§Examples
Cast an NSString
back and forth from NSObject
.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();
Try (and fail) to cast an NSObject
to an NSString
.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());
Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();
This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}
Trait Implementations§
Source§impl ClassType for MLModel
impl ClassType for MLModel
Source§const NAME: &'static str = "MLModel"
const NAME: &'static str = "MLModel"
Source§type ThreadKind = <<MLModel as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<MLModel as ClassType>::Super as ClassType>::ThreadKind
Source§impl NSObjectProtocol for MLModel
impl NSObjectProtocol for MLModel
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass
directly, or cast your objects with AnyObject::downcast_ref