> For the complete documentation index, see [llms.txt](https://docs.natml.ai/unity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.natml.ai/unity/api/mlmodel.md).

# MLModel

The `MLModel` class abstracts a machine learning model, containing a computation graph for making predictions along with feature type information and metadata.

## Inspecting Feature Types

Models provide information about their expected input and output feature types. This type information is crucial for writing model predictors.

### Input Features

```csharp
/// <summary>
/// Model input feature types.
/// </summary>
MLFeatureType[] inputs { get; }
```

The model provides its expected input feature types. This information is crucial in order to create input features for predictions. Typically, a predictor will handle any necessary conversions of your input feature so that it matches the type that the model expects.

{% hint style="info" %}
The `inputs` are reported in the same order that they are expected by the model when making predictions.
{% endhint %}

### Output Features

```csharp
/// <summary>
/// Model output feature types.
/// </summary>
MLFeatureType[] outputs { get; }
```

The model provides its output feature types. This information is crucial in order to convert the model's raw outputs into more usable forms by predictors.

{% hint style="info" %}
The `outputs` are reported in the same order that they are produced by the model when making predictions.
{% endhint %}

## Inspecting Metadata

```csharp
/// <summary>
/// Get the model metadata dictionary.
/// </summary>
IReadOnlyDictionary<string, string> metadata { get; }
```

Models expose metadata that was defined when they were created.

## Disposing the Model

```csharp
/// <summary>
/// Dispose the model and release resources.
/// </summary>
void Dispose ();
```

Models can consume native and cloud resources, including threads, memory allocators, and so on. As a result, you must dispose of the model once you are done using it.

{% hint style="info" %}
The `MLModel` class implements the [`IDisposable`](https://docs.microsoft.com/en-us/dotnet/api/system.idisposable?view=net-5.0) interface, and as such can be used with `using` blocks.
{% endhint %}

{% hint style="danger" %}
Do not use a model once it has been disposed. Doing so will lead to a hard crash.
{% endhint %}
