| { |
| "model_type": "tinydiffusion", |
| "description": "DDPM on 2D points. Not images. The denoiser is an MLP, never a UNet.", |
| "architecture": { |
| "timestep_embedding": { |
| "type": "nn.Embedding", |
| "num_embeddings": 100, |
| "dim": 32 |
| }, |
| "layers": [ |
| "Linear(2+32, 128)", |
| "SiLU", |
| "Linear(128, 128)", |
| "SiLU", |
| "Linear(128, 2)" |
| ], |
| "note": "Output is the predicted 2D noise, raw. No activation on the final layer.", |
| "params": 24450 |
| }, |
| "diffusion": { |
| "T": 100, |
| "objective": "epsilon (predict the noise that was added)", |
| "sampler": "ancestral DDPM, no noise added on the final step", |
| "schedules": { |
| "linear": { |
| "betas": "torch.linspace(1e-4, 0.10, 100)", |
| "alpha_bar_T": 0.0056, |
| "warning": "beta_T is 0.10, NOT the usual 0.02. The 0.02 default is tuned for T=1000; at T=100 it stalls at alpha_bar_T=0.36 and never reaches pure noise." |
| }, |
| "cosine": { |
| "betas": "Nichol & Dhariwal: alpha_bar from a cosine curve, betas derived", |
| "alpha_bar_T": 0.0 |
| } |
| } |
| }, |
| "checkpoints": { |
| "dot": { |
| "schedule": "linear" |
| }, |
| "line": { |
| "schedule": "linear" |
| }, |
| "moons-linear": { |
| "schedule": "linear" |
| }, |
| "moons-cosine": { |
| "schedule": "cosine" |
| } |
| }, |
| "data_space": { |
| "dot": "Gaussian, centre (2.0, 2.0), std 0.1. NOT normalised.", |
| "line": "y = x, u ~ Uniform[-2, 2], perpendicular Gaussian fuzz std 0.1. NOT normalised.", |
| "moons": "sklearn make_moons(noise=0.05), normalised to zero mean / unit std per axis. Generated points come out in THAT space, not raw make_moons space." |
| }, |
| "license": "mit" |
| } |
|
|