You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

PhenoField e98 (e98_large_specdrop_dyn4l)

Frozen phenology field encoder (CrossModalVAE, AdaLN-DiT dynamic branch, species dropout). Image-free interface: forward_field(species_id, prism_window, alphaearth_emb) โ†’ (z_static [576], z_dynamic [192]). The dynamic encoder consumes only the 365ร—7 trailing PRISM window and the 64-d AlphaEarth embedding (no doy / lat-lon / climplicit weights exist in this checkpoint) โ€” season enters through the PRISM window alone.

Files

file what
last.ckpt Lightning checkpoint (weights + full training config in hyper_parameters)
hparams.yaml same config, human-readable
models/*.py the exact model code (CrossModalVAE, AdaLNDynamicEncoder) โ€” self-contained, relative imports only
species_embeddings_v2.pt BioCLIP text matrix [6825, 768]; the constructor loads it via config['species_embedding_path']
species_vocab.json species name โ†’ id (indexes rows of the embedding matrix)
inputs/prism_weekly.npz climatological per-(cell, week) 365ร—7 PRISM windows for the CONUS 0.5ยฐ grid
inputs/alphaearth_2017.parquet per-point AlphaEarth 64-d embeddings (nearest-cell lookup)
inputs/grid_centroids_0.5deg.csv, inputs/plant_flowering_events.parquet grid definition + plant flowering observations

Loading

import sys, torch
from huggingface_hub import snapshot_download
from omegaconf import OmegaConf

d = snapshot_download('dcher95/phenofield-e98')
sys.path.insert(0, d)
from models.cross_modal_vae import CrossModalVAE

ckpt = torch.load(f'{d}/last.ckpt', map_location='cpu', weights_only=False)
cfg = OmegaConf.to_container(OmegaConf.create(ckpt['hyper_parameters']).model, resolve=True)
cfg['species_embedding_path'] = f'{d}/species_embeddings_v2.pt'
model = CrossModalVAE(cfg)
state = {k[len('model.'):]: v for k, v in ckpt['state_dict'].items() if k.startswith('model.')}
missing, unexpected = model.load_state_dict(state, strict=False)
assert not missing and not unexpected   # this models/ copy loads clean
model.eval()

Do not load this checkpoint with the models/ in dcher95/PhenoField's top level โ€” that class silently drops dynamic_encoder.null_species_emb (the parameter species dropout trains). Use the models/ shipped here (a copy of vendor/bwei_ppe).

Downstream pipeline: pipelines/ in the ANTHEIA repo (Summer-2026-CfE project).

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