Diffusion Forge
· 扩散模型实验室 · DDPM / DDIM / Flow Matching
从零手写三大生成范式:闭式前向加噪 + MLP 噪声/速度预测网络(AdamW)+ DDPM / DDIM / Flow 采样,纯 JS 零依赖。
x_t = √ᾱ_t·x₀ + √(1−ᾱ_t)·ε
,网络学的是「怎么把噪声减回去」;Flow 则直接回归速度场
v = ε − x₀
。
训练参数
数据集
四簇高斯 blobs
瑞士卷 swiss roll
双月牙 moons
扩散步数 T
噪声调度
linear β∈[0.002, 0.10]
cosine(Nichol & Dhariwal)
激活函数
ReLU
SiLU(He 初始化)
隐藏层宽 hidden
训练步数 steps
批大小 batch
学习率 lr
随机种子 seed
训练
恢复默认
未训练
Loss 曲线(噪声预测 MSE)
噪声调度 β_t / ᾱ_t
训练数据
x₀ 分布
DDPM 采样
全链随机去噪
DDIM 采样
η=0 时确定性:同种子同结果
Flow Matching 采样
点「训练 Flow 模型」后可用
采样控制
DDPM 祖先采样
DDIM 快采样
Flow Matching(ODE)
✦ 采样
η(DDIM 随机性)
DDIM 跳步 stride
训练 Flow 模型(速度场)
采样时裁剪 x̂₀ 到 [-4,4](cosine 高噪声端稳定化)
W1 距离(1D 排序闭式,对 x/y 取平均):训练+采样后显示
前向扩散演示(加噪过程)
从左到右:x₀ → x₁₂ → x₂₅ → x₃₇ → x_T ≈ 纯噪声。数据信号逐步被高斯噪声淹没,这就是训练时网络看到的输入。
🧪 不变量自检(引擎级,与 Node
_smoke2.js
同一套 18 项)
运行引擎不变量
点击运行 —— 判定逻辑全部来自引擎内
DIFF.invariants
,Node 无头复跑同一套(连同 _smoke.js 共 36 项)。