Diffusers 文档
KarrasVeScheduler
并获得增强的文档体验
开始使用
KarrasVeScheduler
KarrasVeScheduler
是一种专为方差扩展 (VE) 模型定制的随机采样器。它基于 Elucidating the Design Space of Diffusion-Based Generative Models 和 Score-based generative modeling through stochastic differential equations 论文。
KarrasVeScheduler
class diffusers.KarrasVeScheduler
< source >( 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]。
一种专为方差扩展模型定制的随机 scheduler。
此模型继承自 SchedulerMixin 和 ConfigMixin。查看超类文档,了解库为所有 schedulers 实现的通用方法,例如加载和保存。
有关参数的更多详细信息,请参阅 附录 E。用于为特定模型找到最佳 {s_noise, s_churn, s_min, s_max}
的网格搜索值在论文的表 5 中进行了描述。
add_noise_to_input
< source >( sample: Tensor sigma: float generator: typing.Optional[torch._C.Generator] = None )
显式的 Langevin 风格的“扰动”步骤,根据 gamma_i ≥ 0
向样本添加噪声,以达到更高的噪声水平 sigma_hat = sigma_i + gamma_i*sigma_i
。
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 )
设置用于扩散链的离散时间步(在推理之前运行)。
step
< 源代码 >( 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
,否则返回一个 tuple,其中第一个元素是样本张量。
通过反转 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)
扩散链中更新的样本。 derivative (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
of shape(batch_size, num_channels, height, width)
for images) — 计算出的上一个时间步的样本 (x_{t-1})。prev_sample
应该在去噪循环中用作下一个模型输入。 - derivative (
torch.Tensor
of shape(batch_size, num_channels, height, width)
for images) — 预测的原始图像样本 (x_0) 的导数。 - pred_original_sample (
torch.Tensor
of shape(batch_size, num_channels, height, width)
for images) — 基于当前时间步的模型输出,预测的去噪样本 (x_{0})。pred_original_sample
可以用于预览进度或进行指导。
调度器 step 函数输出的输出类。