当前位置: 首页 > news >正文

【论文速读】DDPM:Denoising Diffusion Probabilistic Models

DDPM前向过程、反向过程及Predicter

图片来自李宏毅老师视频
在这里插入图片描述
在这里插入图片描述

论文给出的伪代码

在这里插入图片描述
训练部分只有5梯度下降公式比较难理解:
上文中我们已知我们预测的是noise( ϵ \epsilon ϵ), ϵ \epsilon ϵ - ϵ θ ( x ) \epsilon_\theta(x) ϵθ(x) 其实就是真实值-预测值。其中我们的输入应该是 x T = x t − 1 + ϵ x_T = x_{t-1}+\epsilon xT=xt1+ϵ 这个操作我们要循环T次才能得到结果 x T x_T xT,如下图,想要得到最后一次的结果,通过简化公式,一步就可以得到,和论文给出的公式一致。
在这里插入图片描述

在这里插入图片描述
其中 α ‾ t \overline{\alpha}_t αt是给定好的一组序列, { α ‾ 0 . . . α ‾ T } \{\overline{\alpha}_0 ... \overline{\alpha}_T\} {α0...αT},T长度通常设置为1000。
看懂训练部分公式,预测部分的公式就很简单了(预测部分常用DDIM方法,只执行几十步就可以完成一张不错的图):
简化后: x t − 1 x_{t-1} xt1 = x t x_t xt - ϵ θ ( x ) \epsilon_\theta(x) ϵθ(x) ,因为 α ‾ \overline{\alpha} α是一个常量可以忽略。为什么要再加一个噪音暂时没懂
α ‾ t \overline{\alpha}_t αt,生成方式如下代码:( β \beta β为前向加噪权重)

betas = torch.Tensor(make_beta_schedule(schedule="linear", n_timestep=n_timestep)
)
# [0.9999, 0.9994, 0.9985, 0.9971, 0.9953, 0.9931, 0.9905, 0.9874, 0.9839,0.9800]
alphas = 1.0 - betasdef make_beta_schedule(schedule, n_timestep, linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3
):if schedule == "linear":betas = (torch.linspace(linear_start ** 0.5, linear_end ** 0.5, n_timestep, dtype=torch.float64)** 2)elif schedule == "cosine":timesteps = (torch.arange(n_timestep + 1, dtype=torch.float64) / n_timestep + cosine_s)alphas = timesteps / (1 + cosine_s) * np.pi / 2alphas = torch.cos(alphas).pow(2)alphas = alphas / alphas[0]betas = 1 - alphas[1:] / alphas[:-1]betas = np.clip(betas, a_min=0, a_max=0.999)elif schedule == "sqrt_linear":betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64)elif schedule == "sqrt":betas = (torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64)** 0.5)else:raise ValueError(f"schedule '{schedule}' unknown.")return betas.numpy()

http://www.mrgr.cn/news/25232.html

相关文章:

  • 注意!Facebook已移除细分定位排除受众的功能
  • 【截图服务 +打包】pkg打包 puppeteer
  • web前端面试题精选
  • 众望所归!业内三大刊之首,终于荣升1区TOP,预测明年IF稳涨
  • gdb/cgdb
  • 类原生补全计划:让你的安卓类原生系统更好用更顺手
  • JavaScript 展开运算符 ...
  • 多邻国 v5.166.3 解锁版 零基础轻松学习多国语言
  • HAProxy:高性能的负载均衡与代理解决方案
  • 牛!6个大模型的核心技术!
  • 1 创建公司代码
  • B2B销售:成功所需的工具
  • [ComfyUI]Flux:风格参考IPAdapter安装使用介绍,已经支持Flux
  • TikTok的IP与流量曝光有什么关系
  • 从降价到拓新,老二次元米哈游坐不住了
  • 创客匠人_完美模型!一招让你轻松实现公、私域互通!
  • IT 服务管理标准介绍
  • Spring扩展点系列-ApplicationContextAwareProcessor
  • python-确定进制
  • 按包边(边框)尺寸分类异形创意圆形(饼/盘)LED显示屏有哪些种类