# helia_edge.trainers.vq_autoencoder

## helia_edge.trainers.vq_autoencoder.VQAutoencoder

`class` · `python`

```python
VQAutoencoder(encoder: keras.Model, vq: VectorQuantizer, decoder: keras.Model, **kwargs={})
```

Convenience wrapper around (encoder -> VectorQuantizer -> decoder).

- Supports extra reconstruction-side losses and metrics.
- Can return discrete code indices from the VQ bottleneck.
- Exposes VQ layer metrics alongside base model metrics.

**Parameters**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| encoder | keras.Model | Required | Encoder model producing continuous latents. |
| vq | VectorQuantizer | Required | VectorQuantizer layer that discretizes latents. |
| decoder | keras.Model | Required | Decoder model mapping bottleneck outputs to reconstructions. |

Source: `helia_edge/trainers/vq_autoencoder.py:8`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.encoder

`attribute` · `python`

```python
encoder = encoder
```

Source: `helia_edge/trainers/vq_autoencoder.py:26`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.vq

`attribute` · `python`

```python
vq = vq
```

Source: `helia_edge/trainers/vq_autoencoder.py:27`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.decoder

`attribute` · `python`

```python
decoder = decoder
```

Source: `helia_edge/trainers/vq_autoencoder.py:28`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.metrics

`attribute` · `python`

```python
metrics
```

Source: `helia_edge/trainers/vq_autoencoder.py:152`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.call

`method` · `python`

```python
call(
    x: keras.KerasTensor,
    training: bool = False,
    return_indices: bool = False,
) -> keras.KerasTensor | tuple[keras.KerasTensor, keras.KerasTensor]
```

Run encoder -> VQ bottleneck -> decoder.

**Parameters**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| x | keras.KerasTensor | Required | Input batch. |
| training | bool | False | Whether to run in training mode (affects encoder/decoder/VQ). |
| return_indices | bool | False | If True, also return discrete code indices. |

**Returns**

| Name | Type | Description |
| --- | --- | --- |
|  | keras.KerasTensor \| tuple[keras.KerasTensor, keras.KerasTensor] | Reconstruction, optionally with indices. |

Source: `helia_edge/trainers/vq_autoencoder.py:35`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.compile

`method` · `python`

```python
compile(
    optimizer: keras.optimizers.Optimizer,
    loss: keras.losses.Loss | None = None,
    metrics: list | None = None,
    extra_losses: list | None = None,
    extra_metrics: list | None = None,
    **kwargs={},
)
```

Compile with optional extra losses/metrics.

**Parameters**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| optimizer | keras.optimizers.Optimizer | Required | Keras optimizer |
| loss | keras.losses.Loss \| None | None | base reconstruction loss (e.g., keras.losses.MeanSquaredError()) |
| metrics | list \| None | None | standard Keras metrics (Metric instances or callables) |
| extra_losses | list \| None | None | list[Callable(y_true, y_pred) -> scalar] |
| extra_metrics | list \| None | None | list of Metric OR Callable(y_true, y_pred) -> scalar |

Source: `helia_edge/trainers/vq_autoencoder.py:57`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.compute_loss

`method` · `python`

```python
compute_loss(x=None, y=None, y_pred=None, sample_weight=None, allow_empty=False)
```

Compute total loss = recon + extra losses + layer-added losses.

Source: `helia_edge/trainers/vq_autoencoder.py:92`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.get_config

`method` · `python`

```python
get_config()
```

Return serialized config for saving/loading.

Source: `helia_edge/trainers/vq_autoencoder.py:115`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.from_config

`method` · `python`

```python
from_config(config, custom_objects=None)
```

`classmethod`

Recreate model from serialized config.

Source: `helia_edge/trainers/vq_autoencoder.py:127`

### helia_edge.trainers.vq_autoencoder.VQAutoencoder.compute_metrics

`method` · `python`

```python
compute_metrics(x, y, y_pred, sample_weight=None)
```

Update compiled metrics plus extra metric trackers.

Source: `helia_edge/trainers/vq_autoencoder.py:139`
