代码学习
网络结构: 代码主要分为以下几块:Unet、GaussianDiffusion、Trainer
U-Net
论文的源代码采用 UNet 实现对
ϵ
θ
(
x
t
,
t
)
ϵ_θ(x_t,t)
ϵθ(xt,t) 的预测,整个训练过程其实就是在训练 UNet 网络的参数。无论在前向过程还是反向过程,Unet 的职责都是根据当前的样本和时间 t 预测噪声。
Gaussion Diffusion
前向过程:从 1 到 T 的时间采样一个时间 t,生成一个随机噪声加到图片上,从 UNet 获取预测噪声,计算损失后更新 UNet 梯度。
反向过程:先从正态分布随机采样和训练样本一样大小的纯噪声图片,从 T-1 到 0 逐步重复以下步骤:从
x
t
x_t
xt 还原
x
t
−
1
x_{t-1}
xt−1。
采样