Training¶
Data preparation¶
Download the training dataset (DeepExtractor reconstructions of seven LIGO O3 glitch classes: Blip, Fast Scattering, Koi Fish, Low Frequency Burst, Scattered Light, Tomte, and Whistle) directly from HuggingFace using the built-in helper:
from glitchgan import download_data
paths = download_data("data/")
# paths["samples"] → data/glitch_GAN_samples_scaled_balanced.npy
# paths["labels"] → data/glitch_GAN_labels_balanced.npy
# paths["label_order"] → data/glitch_GAN_label_order.npy
To also download the time-derivative array required for cDVGAN training (~2.1 GB extra):
paths = download_data("data/", include_derivatives=True)
# paths["derivatives"] → data/glitch_GAN_deriv_samples_balanced.npy
The dataset is hosted at tomdooney/deepextractor-glitch-reconstructions on HuggingFace (35,000 samples, 7 classes, 8192 samples at 4096 Hz).
Expected directory layout after download:
data/
├── glitch_GAN_samples_scaled_balanced.npy # (35000, 8192) whitened waveforms
├── glitch_GAN_labels_balanced.npy # (35000, 7) one-hot class labels
├── glitch_GAN_label_order.npy # (7,) class name order
└── glitch_GAN_deriv_samples_balanced.npy # (35000, 8191) derivatives (optional)
Training a model¶
glitchgan-train \
--variant cDVGAN \
--data-dir data/ \
--epochs 500 \
--output-dir outputs/
Available model variants¶
Variant |
Description |
|---|---|
|
Conditional Wasserstein GAN with gradient penalty (single discriminator) |
|
Dual-discriminator cWGAN with derivative discriminator (recommended) |
|
Extended cDVGAN with additional second-derivative discriminator |
Python API¶
from glitchgan.tf import build_gan, train_gan, GlitchDataset
import numpy as np
X = np.load("data/glitch_GAN_samples_scaled_balanced.npy")
y = np.load("data/glitch_GAN_labels_balanced.npy")
dataset = GlitchDataset(X, y, batch_size=64)
gan = build_gan("cDVGAN", noise_dim=100, num_classes=7, signal_length=8192)
train_gan(gan, dataset, epochs=500, checkpoint_dir="checkpoints/")
Checkpointing¶
Weights are saved every 10 epochs to checkpoint_dir/. Training can be resumed
by pointing --output-dir at an existing checkpoint directory.
Run glitchgan-train --help for the full list of arguments.