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

Loss function type.

Mirrors Python `tinker.types.LossFnType`.

## Supported Loss Functions

- `:cross_entropy` - Standard cross-entropy loss
- `:importance_sampling` - Importance-weighted sampling loss
- `:ppo` - Proximal Policy Optimization loss
- `:cispo` - Constrained Importance Sampling Policy Optimization loss
- `:dro` - Distributionally Robust Optimization loss

## Wire Format

String values: `"cross_entropy"` | `"importance_sampling"` | `"ppo"` | `"cispo"` | `"dro"`

## Examples

    iex> LossFnType.parse("cross_entropy")
    :cross_entropy

    iex> LossFnType.to_string(:ppo)
    "ppo"

# `t`

```elixir
@type t() :: :cross_entropy | :importance_sampling | :ppo | :cispo | :dro
```

# `parse`

```elixir
@spec parse(String.t() | nil) :: t() | nil
```

Parse wire format string to atom.

## Examples

    iex> LossFnType.parse("cross_entropy")
    :cross_entropy

    iex> LossFnType.parse("cispo")
    :cispo

    iex> LossFnType.parse("unknown")
    nil

# `to_string`

```elixir
@spec to_string(t()) :: String.t()
```

Convert atom to wire format string.

## Examples

    iex> LossFnType.to_string(:cross_entropy)
    "cross_entropy"

    iex> LossFnType.to_string(:dro)
    "dro"

# `values`

```elixir
@spec values() :: [t()]
```

List all valid loss function types.

---

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