ScoreSdeVeScheduler
ScoreSdeVeScheduler
是一种方差爆炸的随机微分方程 (SDE) 调度器。 它在 Yang Song、Jascha Sohl-Dickstein、Diederik P. Kingma、Abhishek Kumar、Stefano Ermon、Ben Poole 的论文 Score-Based Generative Modeling through Stochastic Differential Equations 中提出。
论文的摘要如下:
从数据中创建噪声很容易;从噪声中创建数据就是生成式建模。我们提出了一个随机微分方程 (SDE),它通过缓慢注入噪声将复杂的数据分布平滑地转换为已知的先验分布,以及一个相应的逆时SDE,它通过缓慢去除噪声将先验分布转换回数据分布。至关重要的是,逆时SDE 仅依赖于扰动数据分布的时间相关梯度场(也称为得分)。通过利用基于得分的生成式建模的进展,我们可以使用神经网络准确地估计这些得分,并使用数值 SDE 求解器生成样本。我们证明了这个框架囊括了基于得分的生成式建模和扩散概率模型的先前方法,允许新的采样程序和新的建模能力。特别是,我们引入了一个预测-校正框架来纠正离散逆时 SDE 演化过程中的错误。我们还推导出一个等效的神经 ODE,它从与 SDE 相同的分布中进行采样,但此外还能实现精确的似然计算和改进的采样效率。此外,我们提供了一种使用基于得分的模型解决逆问题的新方法,如在类条件生成、图像修复和着色方面的实验所示。结合多个架构改进,我们在 CIFAR-10 上实现了无条件图像生成的突破性性能,Inception 分数为 9.89,FID 为 2.20,具有竞争力的似然为 2.99 比特/维,并首次从基于得分的生成式模型演示了 1024 x 1024 图像的高保真生成。
ScoreSdeVeScheduler
class diffusers.ScoreSdeVeScheduler
< source >( num_train_timesteps: int = 2000 snr: float = 0.15 sigma_min: float = 0.01 sigma_max: float = 1348.0 sampling_eps: float = 1e-05 correct_steps: int = 1 )
参数
- num_train_timesteps (
int
, 默认值为 1000) — 用于训练模型的扩散步骤数。 - snr (
float
, 默认值为 0.15) — 一个系数,用于对从model_output
样本(来自网络)到随机噪声的步骤进行加权。 - sigma_min (
float
, 默认值为 0.01) — 采样过程中 sigma 序列的初始噪声尺度。 最小的 sigma 应该反映数据的分布。 - sigma_max (
float
, 默认值为 1348.0) — 用于传递到模型的连续时间步长范围内的最大值。 - sampling_eps (
float
, 默认值为 1e-5) — 采样的结束值,其中时间步长从 1 到 epsilon 逐渐递减。 - correct_steps (
int
, 默认值为 1) — 对生成的样本执行的校正步骤数量。
ScoreSdeVeScheduler
是一种方差爆炸的随机微分方程 (SDE) 调度器。
此模型继承自 SchedulerMixin 和 ConfigMixin。查看超类文档,了解库为所有调度器实现的通用方法,例如加载和保存。
scale_model_input
< 源代码 >( sample: 张量 timestep: 可选 = None ) → torch.Tensor
确保与需要根据当前时间步缩放降噪模型输入的调度器互换。
set_sigmas
< 源代码 >( num_inference_steps: int sigma_min: float = None sigma_max: float = None sampling_eps: float = None )
设置用于扩散链的噪声尺度(在推理之前运行)。sigmas 控制样本更新的 drift
和 diffusion
组件的权重。
set_timesteps
< 源代码 >( num_inference_steps: int sampling_eps: float = None device: 联合 = None )
设置用于扩散链的连续时间步(在推理之前运行)。
step_correct
< 源代码 >( model_output: 张量 sample: 张量 generator: 可选 = None return_dict: bool = True ) → SdeVeOutput 或 元组
参数
- model_output (
torch.Tensor
) — 来自学习扩散模型的直接输出。 - sample (
torch.Tensor
) — 由扩散过程创建的样本的当前实例。 - generator (
torch.Generator
, 可选) — 随机数生成器。 - return_dict (
bool
, 可选,默认值为True
) — 是否返回 SdeVeOutput 或元组
。
返回值
SdeVeOutput 或 元组
如果 return_dict 为 True
,则返回 SdeVeOutput,否则返回一个元组,其中第一个元素是样本张量。
根据网络的 model_output
校正预测的样本。这通常在对前一个时间步进行预测后重复运行。
step_pred
< 源代码 >( model_output: 张量 timestep: int sample: 张量 generator: 可选 = None return_dict: bool = True ) →
SdeVeOutput 或 元组
如果 return_dict 为 True
,则返回 SdeVeOutput,否则返回一个元组,其中第一个元素是样本张量。
通过反转 SDE 来预测前一个时间步的样本。此函数从学习到的模型输出(通常是预测的噪声)传播扩散过程。
SdeVeOutput
class diffusers.schedulers.scheduling_sde_ve.SdeVeOutput
< 来源 >( prev_sample: Tensor prev_sample_mean: Tensor )
调度程序的 step
函数输出的输出类。