ZUNA / README.md
adammnrr's picture
Re-host ZUNA encoder weights (bit-identical mirror of Zyphra/ZUNA, apache-2.0)
10cd774 verified
|
Raw
History Blame Contribute Delete
1.87 kB
---
license: apache-2.0
library_name: braindecode
tags:
- eeg
- foundation-model
- braindecode
pipeline_tag: feature-extraction
---
# ZUNA (braindecode re-host)
Faithful re-host of the **ZUNA** EEG foundation-model encoder weights for use with
[braindecode](https://github.com/braindecode/braindecode).
- **Original model:** [`Zyphra/ZUNA`](https://huggingface.co/Zyphra/ZUNA)
- **Original code:** https://github.com/Zyphra/zuna
- **Paper:** Warner, C., Mago, J., Huml, J.R., Osman, M. and Millidge, B. (2026).
*ZUNA: Flexible EEG Superresolution with Position-Aware Diffusion Autoencoders.*
arXiv:2602.18478
- **Original authors (Zyphra):** Chris Warner, Jonas Mago, Jon Huml, et al.
- **License:** Apache-2.0 (inherited from the upstream release)
## Why this re-host
The braindecode `ZUNA` port loads these weights through
`ZUNA.from_pretrained(...)`. Re-hosting under the `braindecode` org gives a
stable, permanent location that the library can point to by default, so the
integration does not depend on the upstream repository staying unchanged. The
weights file is **bit-identical** to the upstream checkpoint (same SHA-256);
only the filename is normalised to the standard `model.safetensors`.
## What is (and is not) pretrained
These are the pretrained **encoder** weights (a position-aware diffusion
autoencoder trained for EEG superresolution). The braindecode wrapper adds a
**classification head that is randomly initialised** and must be fine-tuned on
your downstream task — loading these weights alone does not give a trained
classifier.
## Usage
```python
from braindecode.models import ZUNA
# Defaults to this repo (braindecode/ZUNA); n_chans / n_outputs are montage-
# and task-dependent and must be supplied.
model = ZUNA.from_pretrained(n_chans=19, n_outputs=4)
# Inputs are 5 s EEG windows sampled at 256 Hz (n_times = 1280).
```