DESI Spectral Anomaly Detector

PyTorch autoencoder for detecting spectrally unusual objects in DESI survey data.

Model Details

  • Architecture: Encoder (496โ†’256โ†’128โ†’64) + Decoder (64โ†’128โ†’256โ†’496)
  • Training data: 21,388 DESI EDR spectra from 10 diverse healpix pixels
  • Input: Concatenated B+R+Z arm flux vectors (16x downsampled from 7,958 to 496 features)
  • Output: Reconstruction + anomaly score (MSE per spectrum)
  • Latent dimension: 64

Training

  • 100 epochs, Adam optimizer, lr=1e-3 with ReduceLROnPlateau
  • Per-spectrum normalization (divide by median absolute flux, clip to [-10, 10])
  • Sky-region holdout validation

Results

  • 30/30 top spectral anomalies NOT in SIMBAD (genuinely uncataloged)
  • Objects from 4+ distinct sky regions (not clustered)
  • Gate 3 injection: emission line PASSES (2.3x), z-shift borderline (1.3x)

Usage

import torch

class SpectralAE(torch.nn.Module):
    def __init__(self, n_in=496, n_lat=64):
        super().__init__()
        self.enc = torch.nn.Sequential(
            torch.nn.Linear(n_in, 256), torch.nn.BatchNorm1d(256), torch.nn.ReLU(), torch.nn.Dropout(0.1),
            torch.nn.Linear(256, 128), torch.nn.ReLU(),
            torch.nn.Linear(128, n_lat))
        self.dec = torch.nn.Sequential(
            torch.nn.Linear(n_lat, 128), torch.nn.ReLU(),
            torch.nn.Linear(128, 256), torch.nn.BatchNorm1d(256), torch.nn.ReLU(), torch.nn.Dropout(0.1),
            torch.nn.Linear(256, n_in))
    def forward(self, x): return self.dec(self.enc(x))

model = SpectralAE()
model.load_state_dict(torch.load("autoencoder_model.pt"))
model.eval()

Part of the BigBounce Research Program

https://bigbounce.hubify.app

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support