Diffusers documentation
PNDMScheduler
PNDMScheduler
PNDMScheduler، أو الأساليب العددية الزائفة لنماذج الانتشار، يستخدم تقنيات أكثر تقدماً لتكامل معادلات التفاضل العادية مثل طريقة رونغي-كوتا وطريقة الخطوات المتعددة الخطية. يمكن العثور على التنفيذ الأصلي في crowsonkb/k-diffusion.
PNDMScheduler
فئة diffusers.PNDMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneskip_prk_steps: bool = Falseset_alpha_to_one: bool = Falseprediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0 )
المعاملات
- num_train_timesteps (
int، القيمة الافتراضية1000) — عدد خطوات الانتشار لتدريب النموذج. - beta_start (
float، القيمة الافتراضية0.0001) — قيمةbetaالابتدائية للاستدلال. - beta_end (
float، القيمة الافتراضية0.02) — القيمة النهائية لـbeta. - beta_schedule (
"linear"، أو"scaled_linear"، أو"squaredcos_cap_v2"، الافتراضي هو"linear") — جدول بيتا، وهو إسقاط من نطاق بيتا إلى تسلسل من قيم بيتا لخطوات النموذج. - trained_betas (
np.ndarray، اختياري) — مرر مصفوفة من قيم بيتا مباشرةً إلى منشئ الكائن لتجاوزbeta_startوbeta_end. - skip_prk_steps (
bool، القيمة الافتراضيةFalse) — يسمح للمجدول بتخطي خطوات رونج-كوتا (Runge-Kutta) المحددة في الورقة الأصلية بوصفها مطلوبة قبل خطوات PLMS. - set_alpha_to_one (
bool، القيمة الافتراضيةFalse) — يستخدم كل خطوة انتشار قيمة حاصل ضرب الألفا في تلك الخطوة وفي الخطوة السابقة. لا توجد ألفا سابقة للخطوة الأخيرة. عند تعيين هذا الخيار إلىTrueيتم تثبيت حاصل ضرب ألفا السابقة على1، وإلا فإنه يستخدم قيمة ألفا في الخطوة 0. - prediction_type (
"epsilon"أو"v_prediction"، الافتراضي هو"epsilon") — نوع التنبؤ لدالة المجدول؛ يمكن أن يكونepsilon(يتنبأ بالضوضاء في عملية الانتشار) أوv_prediction(انظر القسم 2.4 من ورقة Imagen Video). - timestep_spacing (
"linspace","leading", or"trailing", defaults to"leading") — The way the timesteps should be scaled. Refer to Table 2 of the Common Diffusion Noise Schedules and Sample Steps are Flawed for more information. - steps_offset (
int، القيمة الافتراضية0) — إزاحة تُضاف إلى خطوات الاستدلال، كما تتطلبها بعض عائلات النماذج.
PNDMScheduler يستخدم طرقًا عددية تقريبية لنماذج الانتشار مثل طريقة Runge-Kutta وطريقة الخطوات المتعددة الخطية.
يرث هذا النموذج من SchedulerMixin و ConfigMixin. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع مجدوليات الوقت مثل التحميل والحفظ.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
أضف الضوضاء إلى العينات الأصلية وفقًا لحجم الضوضاء في كل خطوة زمنية (وهذا هو عملية الانتشار الأمامية).
scale_model_input
< source >( sample: Tensor*args**kwargs ) → torch.Tensor
يضمن قابلية الاستبدال مع المجدولات التي تحتاج إلى تحجيم مدخلات نموذج إزالة الضوضاء اعتمادًا على خطوة الزمن الحالية.
set_timesteps
< source >( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )
يحدد الخطوات الزمنية المنفصلة المستخدمة لسلسلة الانتشار (لتُنفَّذ قبل الاستدلال).
خطوة
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع SchedulerOutput أوtuple.
يعيد
SchedulerOutput أو tuple
إذا كانت True هي قيمة return_dict، يُعاد SchedulerOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.
تنبّأ بالعينة من الخطوة الزمنية السابقة عن طريق عكس عملية المعادلة التفاضلية العشوائية (SDE). تنقل هذه الدالة عملية الانتشار من مخرجات النموذج المتعلّم (والتي تكون في الغالب الضوضاء المتنبّأ بها)، وتستدعي step_prk() أو step_plms() اعتماداً على المتغير الداخلي counter.
step_plms
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع SchedulerOutput أو tuple.
يعيد
SchedulerOutput أو tuple
إذا كانت True هي قيمة return_dict، يُعاد SchedulerOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.
تنبّأ بالعينة من الخطوة الزمنية السابقة عن طريق عكس معادلة التفاضل العشوائية (SDE). تنقل هذه الدالة العينة باستخدام طريقة الخطوات المتعددة الخطية. تقوم بعملية تمرير أمامي عدة مرات لتقريب الحل.
step_prk
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
المعاملات
- model_output (
torch.Tensor) — المخرجات المباشرة من نموذج الانتشار المُتعلَّم. - timestep (
int) — خطوة الزمن المنفصلة الحالية في سلسلة الانتشار. - sample (
torch.Tensor) — نسخة حالية من العينة التي أنشأها عملية الانتشار. - return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع SchedulerOutput أو tuple.
يعيد
SchedulerOutput أو tuple
إذا كانت True هي قيمة return_dict، يُعاد SchedulerOutput، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.
تنبّأ بالعينة من الخطوة الزمنية السابقة عن طريق عكس معادلة ستوكه التفاضلية. تنقل هذه الدالة العينة باستخدام طريقة رونغي-كوتا. تقوم بأربعة تمريرات أمامية لتقريب حل المعادلة التفاضلية.
SchedulerOutput
فئة diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
الفئة الأساسية لمخرجات دالة step في المجدول.