# `ExBurn.BurnBridge`
[🔗](https://github.com/ohhi-vn/ex_burn/blob/main/lib/ex_burn/burn_bridge.ex#L1)

High-level bridge for Burn operations.

This module provides a direct API to Burn tensor operations, bypassing
the Nx abstraction layer for cases where you need more control or want
to avoid the overhead of Nx ↔ Burn conversions.

## Usage

    # Create tensors directly
    t1 = ExBurn.BurnBridge.zeros([3, 3], :f32)
    t2 = ExBurn.BurnBridge.ones([3, 3], :f32)

    # Perform operations
    t3 = ExBurn.BurnBridge.add(t1, t2)

    # Convert to Nx when needed
    {:ok, nx_tensor} = ExBurn.BurnBridge.to_nx(t3)

# `abs`

```elixir
@spec abs(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `add`

```elixir
@spec add(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `buffer`

```elixir
@spec buffer(list(), [non_neg_integer()], atom()) :: ExCubecl.buffer_ref()
```

Creates a GPU buffer via ExCubecl from a list of values.

# `buffer!`

Creates a GPU buffer via ExCubecl, raising on error.

# `buffer_shape`

```elixir
@spec buffer_shape(ExCubecl.buffer_ref()) :: [non_neg_integer()]
```

Returns the shape of an ExCubecl buffer.

# `buffer_size`

```elixir
@spec buffer_size(ExCubecl.buffer_ref()) :: non_neg_integer()
```

Returns the byte size of an ExCubecl buffer.

# `cross_entropy`

```elixir
@spec cross_entropy(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `div`

```elixir
@spec div(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `dropout`

```elixir
@spec dropout(ExBurn.Tensor.t(), float(), boolean()) :: ExBurn.Tensor.t()
```

# `exp`

```elixir
@spec exp(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `free`

```elixir
@spec free(ExBurn.Tensor.t()) :: :ok
```

# `from_nx`

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

Creates a tensor from an Nx tensor.

# `layer_norm`

```elixir
@spec layer_norm(ExBurn.Tensor.t(), non_neg_integer(), float()) :: ExBurn.Tensor.t()
```

# `log`

```elixir
@spec log(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `matmul`

```elixir
@spec matmul(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `mean`

```elixir
@spec mean(ExBurn.Tensor.t(), [non_neg_integer()] | nil) :: ExBurn.Tensor.t()
```

# `mse`

```elixir
@spec mse(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `mul`

```elixir
@spec mul(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `neg`

```elixir
@spec neg(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `ones`

```elixir
@spec ones([non_neg_integer()], ExBurn.Tensor.type()) :: ExBurn.Tensor.t()
```

Creates a tensor filled with ones.

# `rand`

```elixir
@spec rand([non_neg_integer()], ExBurn.Tensor.type(), float(), float()) ::
  ExBurn.Tensor.t()
```

Creates a random tensor with uniform distribution.

# `read_buffer`

```elixir
@spec read_buffer(ExCubecl.buffer_ref()) :: binary()
```

Reads data from an ExCubecl buffer.

# `relu`

```elixir
@spec relu(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `reshape`

```elixir
@spec reshape(ExBurn.Tensor.t(), [non_neg_integer()]) :: ExBurn.Tensor.t()
```

# `sigmoid`

```elixir
@spec sigmoid(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `softmax`

```elixir
@spec softmax(ExBurn.Tensor.t(), non_neg_integer()) :: ExBurn.Tensor.t()
```

# `sqrt`

```elixir
@spec sqrt(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `sub`

```elixir
@spec sub(ExBurn.Tensor.t(), ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `sum`

```elixir
@spec sum(ExBurn.Tensor.t(), [non_neg_integer()] | nil) :: ExBurn.Tensor.t()
```

# `to_cpu`

```elixir
@spec to_cpu(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `to_gpu`

```elixir
@spec to_gpu(ExBurn.Tensor.t()) :: ExBurn.Tensor.t()
```

# `to_nx`

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

Converts a Burn tensor to Nx.

# `transpose`

```elixir
@spec transpose(ExBurn.Tensor.t(), non_neg_integer(), non_neg_integer()) ::
  ExBurn.Tensor.t()
```

# `zeros`

```elixir
@spec zeros([non_neg_integer()], ExBurn.Tensor.type()) :: ExBurn.Tensor.t()
```

Creates a tensor filled with zeros.

---

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