Diffusers 文档
KarrasVe调度器
并获得增强的文档体验
开始使用
KarrasVe调度器
KarrasVeScheduler
是一个针对方差扩展(VE)模型定制的随机采样器。它基于 “阐明基于扩散的生成模型的设计空间” 和 “通过随机微分方程的基于分数的生成建模” 论文。
KarrasVeScheduler
class diffusers.KarrasVeScheduler
< 源代码 >( sigma_min: float = 0.02 sigma_max: float = 100 s_noise: float = 1.007 s_churn: float = 80 s_min: float = 0.05 s_max: float = 50 )
参数
- sigma_min (
float
, 默认为 0.02) — 最小噪声幅度。 - sigma_max (
float
, 默认为 100) — 最大噪声幅度。 - s_noise (
float
, 默认为 1.007) — 用于抵消采样过程中细节损失的额外噪声量。合理范围是 [1.000, 1.011]。 - s_churn (
float
, 默认为 80) — 控制随机性总量的参数。合理范围是 [0, 100]。 - s_min (
float
, 默认为 0.05) — 添加噪声(启用随机性)的 sigma 范围的起始值。合理范围是 [0, 10]。 - s_max (
float
, 默认为 50) — 添加噪声的 sigma 范围的结束值。合理范围是 [0.2, 80]。
一种为方差扩展模型量身定制的随机采样器。
此模型继承自 SchedulerMixin 和 ConfigMixin。有关库为所有调度器(如加载和保存)实现的通用方法,请查看超类文档。
有关参数的更多详细信息,请参见 附录 E。用于为特定模型查找最佳 {s_noise, s_churn, s_min, s_max}
的网格搜索值在论文的表 5 中描述。
add_noise_to_input
< 源代码 >( sample: Tensor sigma: float generator: typing.Optional[torch._C.Generator] = None )
根据 gamma_i ≥ 0
向样本添加噪声,以达到更高噪声水平 sigma_hat = sigma_i + gamma_i*sigma_i
的显式 Langevin-like “churn” 步骤。
scale_model_input
< 源代码 >( sample: Tensor timestep: typing.Optional[int] = None ) → torch.Tensor
确保与需要根据当前时间步缩放去噪模型输入的调度器互换使用。
set_timesteps
< 源代码 >( num_inference_steps: int device: typing.Union[str, torch.device] = None )
设置用于扩散链的离散时间步(在推理之前运行)。
步骤
< 源代码 >( model_output: Tensor sigma_hat: float sigma_prev: float sample_hat: Tensor return_dict: bool = True ) → ~schedulers.scheduling_karras_ve.KarrasVESchedulerOutput
或 tuple
参数
- model_output (
torch.Tensor
) — 来自学习扩散模型的直接输出。 - sigma_hat (
float
) — - sigma_prev (
float
) — - sample_hat (
torch.Tensor
) — - return_dict (
bool
, 可选, 默认为True
) — 是否返回~schedulers.scheduling_karras_ve.KarrasVESchedulerOutput
或tuple
。
返回
~schedulers.scheduling_karras_ve.KarrasVESchedulerOutput
或 tuple
如果 return_dict 为 True
,则返回 ~schedulers.scheduling_karras_ve.KarrasVESchedulerOutput
,否则返回一个元组,其中第一个元素是样本张量。
通过逆转 SDE 预测前一个时间步的样本。此函数从学习到的模型输出(通常是预测的噪声)传播扩散过程。
step_correct
< 源代码 >( model_output: Tensor sigma_hat: float sigma_prev: float sample_hat: Tensor sample_prev: Tensor derivative: Tensor return_dict: bool = True ) → prev_sample (TODO)
参数
- model_output (
torch.Tensor
) — 来自学习扩散模型的直接输出。 - sigma_hat (
float
) — TODO - sigma_prev (
float
) — TODO - sample_hat (
torch.Tensor
) — TODO - sample_prev (
torch.Tensor
) — TODO - derivative (
torch.Tensor
) — TODO - return_dict (
bool
, 可选, 默认为True
) — 是否返回 DDPMSchedulerOutput 或tuple
。
返回
prev_sample (TODO)
扩散链中更新的样本。导数(TODO):TODO
根据网络的 model_output
修正预测样本。
KarrasVeOutput
class diffusers.schedulers.deprecated.scheduling_karras_ve.KarrasVeOutput
< 源代码 >( prev_sample: Tensor derivative: Tensor pred_original_sample: typing.Optional[torch.Tensor] = None )
参数
- prev_sample (
torch.Tensor
, 图像形状为(batch_size, num_channels, height, width)
) — 上一个时间步计算的样本(x_{t-1})。prev_sample
应作为去噪循环中的下一个模型输入。 - derivative (
torch.Tensor
, 图像形状为(batch_size, num_channels, height, width)
) — 预测原始图像样本 (x_0) 的导数。 - pred_original_sample (
torch.Tensor
, 图像形状为(batch_size, num_channels, height, width)
) — 基于当前时间步的模型输出预测的去噪样本 (x_{0})。pred_original_sample
可用于预览进度或进行引导。
调度器步进函数输出的输出类。