{ "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" }