# `Tinkex.Types.TensorData`
[🔗](https://github.com/North-Shore-AI/tinkex/blob/v0.4.0/lib/tinkex/types/tensor_data.ex#L1)

Numerical tensor data for training.

Mirrors Python tinker.types.TensorData.

IMPORTANT: Only `int64` and `float32` dtypes are supported by the backend.
This module performs aggressive casting to match Python SDK behavior.

# `t`

```elixir
@type t() :: %Tinkex.Types.TensorData{
  data: [number()],
  dtype: Tinkex.Types.TensorDtype.t(),
  shape: [non_neg_integer()] | nil
}
```

# `from_nx`

```elixir
@spec from_nx(Nx.Tensor.t()) :: t()
```

Create TensorData from an Nx tensor.

Performs aggressive type casting to match Python SDK:
- float64 → float32 (downcast)
- int32 → int64 (upcast)
- unsigned → int64 (upcast)

# `to_nx`

```elixir
@spec to_nx(t()) :: Nx.Tensor.t()
```

Convert TensorData back to an Nx tensor.

# `tolist`

```elixir
@spec tolist(t()) :: [number()]
```

Return the flat data list from TensorData.

Provides API parity with Python's `TensorData.tolist()`.

## Examples

    iex> tensor = TensorData.from_nx(Nx.tensor([1.0, 2.0, 3.0]))
    iex> TensorData.tolist(tensor)
    [1.0, 2.0, 3.0]

---

*Consult [api-reference.md](api-reference.md) for complete listing*
