import{S as dr,i as cr,s as lr,e as s,k as l,w as P,t as a,M as pr,c as o,d as r,m as p,a as n,x as w,h as i,b as d,G as e,g as v,y,L as ur,q as x,o as E,B as M,v as fr}from"../../../chunks/vendor-hf-doc-builder.js";import{D as te}from"../../../chunks/Docstring-hf-doc-builder.js";import{I as Ft}from"../../../chunks/IconCopyLink-hf-doc-builder.js";function hr(At){let b,Se,S,N,re,I,Ae,se,Ce,$e,$,k,oe,R,Le,ne,qe,De,T,Ie,K,Re,Ke,Pe,D,O,ae,V,Ve,ie,We,we,c,W,He,de,Ue,Be,u,j,Ge,Je,ce,Ye,je,le,ze,Qe,pe,Xe,Ze,z,et,tt,Q,rt,st,X,ot,nt,at,Z,it,H,dt,ct,F,U,lt,ue,pt,ut,A,B,ft,fe,ht,mt,_,G,gt,he,_t,vt,g,bt,me,St,$t,ge,Dt,Pt,_e,wt,yt,xt,C,J,Et,ve,Mt,Nt,L,Y,kt,be,Tt,ye;return I=new Ft({}),R=new Ft({}),V=new Ft({}),W=new te({props:{name:"class diffusers.PNDMScheduler",anchor:"diffusers.PNDMScheduler",parameters:[{name:"num_train_timesteps",val:": int = 1000"},{name:"beta_start",val:": float = 0.0001"},{name:"beta_end",val:": float = 0.02"},{name:"beta_schedule",val:": str = 'linear'"},{name:"trained_betas",val:": typing.Union[numpy.ndarray, typing.List[float], NoneType] = None"},{name:"skip_prk_steps",val:": bool = False"},{name:"set_alpha_to_one",val:": bool = False"},{name:"prediction_type",val:": str = 'epsilon'"},{name:"steps_offset",val:": int = 0"}],parametersDescription:[{anchor:"diffusers.PNDMScheduler.num_train_timesteps",description:"<strong>num_train_timesteps</strong> (<code>int</code>) &#x2014; number of diffusion steps used to train the model.",name:"num_train_timesteps"},{anchor:"diffusers.PNDMScheduler.beta_start",description:"<strong>beta_start</strong> (<code>float</code>) &#x2014; the starting <code>beta</code> value of inference.",name:"beta_start"},{anchor:"diffusers.PNDMScheduler.beta_end",description:"<strong>beta_end</strong> (<code>float</code>) &#x2014; the final <code>beta</code> value.",name:"beta_end"},{anchor:"diffusers.PNDMScheduler.beta_schedule",description:`<strong>beta_schedule</strong> (<code>str</code>) &#x2014;
the beta schedule, a mapping from a beta range to a sequence of betas for stepping the model. Choose from
<code>linear</code>, <code>scaled_linear</code>, or <code>squaredcos_cap_v2</code>.`,name:"beta_schedule"},{anchor:"diffusers.PNDMScheduler.trained_betas",description:`<strong>trained_betas</strong> (<code>np.ndarray</code>, optional) &#x2014;
option to pass an array of betas directly to the constructor to bypass <code>beta_start</code>, <code>beta_end</code> etc.`,name:"trained_betas"},{anchor:"diffusers.PNDMScheduler.skip_prk_steps",description:`<strong>skip_prk_steps</strong> (<code>bool</code>) &#x2014;
allows the scheduler to skip the Runge-Kutta steps that are defined in the original paper as being required
before plms steps; defaults to <code>False</code>.`,name:"skip_prk_steps"},{anchor:"diffusers.PNDMScheduler.set_alpha_to_one",description:`<strong>set_alpha_to_one</strong> (<code>bool</code>, default <code>False</code>) &#x2014;
each diffusion step uses the value of alphas product at that step and at the previous one. For the final
step there is no previous alpha. When this option is <code>True</code> the previous alpha product is fixed to <code>1</code>,
otherwise it uses the value of alpha at step 0.`,name:"set_alpha_to_one"},{anchor:"diffusers.PNDMScheduler.prediction_type",description:`<strong>prediction_type</strong> (<code>str</code>, default <code>epsilon</code>, optional) &#x2014;
prediction type of the scheduler function, one of <code>epsilon</code> (predicting the noise of the diffusion process)
or <code>v_prediction</code> (see section 2.4 <a href="https://imagen.research.google/video/paper.pdf" rel="nofollow">https://imagen.research.google/video/paper.pdf</a>)`,name:"prediction_type"},{anchor:"diffusers.PNDMScheduler.steps_offset",description:`<strong>steps_offset</strong> (<code>int</code>, default <code>0</code>) &#x2014;
an offset added to the inference steps. You can use a combination of <code>offset=1</code> and
<code>set_alpha_to_one=False</code>, to make the last step use step 0 for the previous alpha product, as done in
stable diffusion.`,name:"steps_offset"}],source:"https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_pndm.py#L56"}}),U=new te({props:{name:"scale_model_input",anchor:"diffusers.PNDMScheduler.scale_model_input",parameters:[{name:"sample",val:": FloatTensor"},{name:"*args",val:""},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"diffusers.PNDMScheduler.scale_model_input.sample",description:"<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014; input sample",name:"sample"}],source:"https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_pndm.py#L343",returnDescription:`
<p>scaled input sample</p>
`,returnType:`
<p><code>torch.FloatTensor</code></p>
`}}),B=new te({props:{name:"set_timesteps",anchor:"diffusers.PNDMScheduler.set_timesteps",parameters:[{name:"num_inference_steps",val:": int"},{name:"device",val:": typing.Union[str, torch.device] = None"}],parametersDescription:[{anchor:"diffusers.PNDMScheduler.set_timesteps.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>int</code>) &#x2014;
the number of diffusion steps used when generating samples with a pre-trained model.`,name:"num_inference_steps"}],source:"https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_pndm.py#L151"}}),G=new te({props:{name:"step",anchor:"diffusers.PNDMScheduler.step",parameters:[{name:"model_output",val:": FloatTensor"},{name:"timestep",val:": int"},{name:"sample",val:": FloatTensor"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.PNDMScheduler.step.model_output",description:"<strong>model_output</strong> (<code>torch.FloatTensor</code>) &#x2014; direct output from learned diffusion model.",name:"model_output"},{anchor:"diffusers.PNDMScheduler.step.timestep",description:"<strong>timestep</strong> (<code>int</code>) &#x2014; current discrete timestep in the diffusion chain.",name:"timestep"},{anchor:"diffusers.PNDMScheduler.step.sample",description:`<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014;
current instance of sample being created by diffusion process.`,name:"sample"},{anchor:"diffusers.PNDMScheduler.step.return_dict",description:"<strong>return_dict</strong> (<code>bool</code>) &#x2014; option for returning tuple rather than SchedulerOutput class",name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_pndm.py#L190",returnDescription:`
<p><a
  href="/docs/diffusers/main/en/api/schedulers/overview#diffusers.schedulers.scheduling_utils.SchedulerOutput"
>SchedulerOutput</a> if <code>return_dict</code> is True, otherwise a <code>tuple</code>. When
returning a tuple, the first element is the sample tensor.</p>
`,returnType:`
<p><a
  href="/docs/diffusers/main/en/api/schedulers/overview#diffusers.schedulers.scheduling_utils.SchedulerOutput"
>SchedulerOutput</a> or <code>tuple</code></p>
`}}),J=new te({props:{name:"step_plms",anchor:"diffusers.PNDMScheduler.step_plms",parameters:[{name:"model_output",val:": FloatTensor"},{name:"timestep",val:": int"},{name:"sample",val:": FloatTensor"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.PNDMScheduler.step_plms.model_output",description:"<strong>model_output</strong> (<code>torch.FloatTensor</code>) &#x2014; direct output from learned diffusion model.",name:"model_output"},{anchor:"diffusers.PNDMScheduler.step_plms.timestep",description:"<strong>timestep</strong> (<code>int</code>) &#x2014; current discrete timestep in the diffusion chain.",name:"timestep"},{anchor:"diffusers.PNDMScheduler.step_plms.sample",description:`<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014;
current instance of sample being created by diffusion process.`,name:"sample"},{anchor:"diffusers.PNDMScheduler.step_plms.return_dict",description:"<strong>return_dict</strong> (<code>bool</code>) &#x2014; option for returning tuple rather than SchedulerOutput class",name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_pndm.py#L276",returnDescription:`
<p><code>~scheduling_utils.SchedulerOutput</code> if <code>return_dict</code> is
True, otherwise a <code>tuple</code>. When returning a tuple, the first element is the sample tensor.</p>
`,returnType:`
<p><code>~scheduling_utils.SchedulerOutput</code> or <code>tuple</code></p>
`}}),Y=new te({props:{name:"step_prk",anchor:"diffusers.PNDMScheduler.step_prk",parameters:[{name:"model_output",val:": FloatTensor"},{name:"timestep",val:": int"},{name:"sample",val:": FloatTensor"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.PNDMScheduler.step_prk.model_output",description:"<strong>model_output</strong> (<code>torch.FloatTensor</code>) &#x2014; direct output from learned diffusion model.",name:"model_output"},{anchor:"diffusers.PNDMScheduler.step_prk.timestep",description:"<strong>timestep</strong> (<code>int</code>) &#x2014; current discrete timestep in the diffusion chain.",name:"timestep"},{anchor:"diffusers.PNDMScheduler.step_prk.sample",description:`<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014;
current instance of sample being created by diffusion process.`,name:"sample"},{anchor:"diffusers.PNDMScheduler.step_prk.return_dict",description:"<strong>return_dict</strong> (<code>bool</code>) &#x2014; option for returning tuple rather than SchedulerOutput class",name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_pndm.py#L221",returnDescription:`
<p><code>~scheduling_utils.SchedulerOutput</code> if <code>return_dict</code> is
True, otherwise a <code>tuple</code>. When returning a tuple, the first element is the sample tensor.</p>
`,returnType:`
<p><code>~scheduling_utils.SchedulerOutput</code> or <code>tuple</code></p>
`}}),{c(){b=s("meta"),Se=l(),S=s("h1"),N=s("a"),re=s("span"),P(I.$$.fragment),Ae=l(),se=s("span"),Ce=a("Pseudo numerical methods for diffusion models (PNDM)"),$e=l(),$=s("h2"),k=s("a"),oe=s("span"),P(R.$$.fragment),Le=l(),ne=s("span"),qe=a("Overview"),De=l(),T=s("p"),Ie=a("Original implementation can be found "),K=s("a"),Re=a("here"),Ke=a("."),Pe=l(),D=s("h2"),O=s("a"),ae=s("span"),P(V.$$.fragment),Ve=l(),ie=s("span"),We=a("PNDMScheduler"),we=l(),c=s("div"),P(W.$$.fragment),He=l(),de=s("p"),Ue=a(`Pseudo numerical methods for diffusion models (PNDM) proposes using more advanced ODE integration techniques,
namely Runge-Kutta method and a linear multi-step method.`),Be=l(),u=s("p"),j=s("a"),Ge=a("~ConfigMixin"),Je=a(" takes care of storing all config attributes that are passed in the scheduler\u2019s "),ce=s("code"),Ye=a("__init__"),je=a(`
function, such as `),le=s("code"),ze=a("num_train_timesteps"),Qe=a(". They can be accessed via "),pe=s("code"),Xe=a("scheduler.config.num_train_timesteps"),Ze=a(`.
`),z=s("a"),et=a("SchedulerMixin"),tt=a(" provides general loading and saving functionality via the "),Q=s("a"),rt=a("SchedulerMixin.save_pretrained()"),st=a(` and
`),X=s("a"),ot=a("from_pretrained()"),nt=a(" functions."),at=l(),Z=s("p"),it=a("For more details, see the original paper: "),H=s("a"),dt=a("https://arxiv.org/abs/2202.09778"),ct=l(),F=s("div"),P(U.$$.fragment),lt=l(),ue=s("p"),pt=a(`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
current timestep.`),ut=l(),A=s("div"),P(B.$$.fragment),ft=l(),fe=s("p"),ht=a("Sets the discrete timesteps used for the diffusion chain. Supporting function to be run before inference."),mt=l(),_=s("div"),P(G.$$.fragment),gt=l(),he=s("p"),_t=a(`Predict the sample at the previous timestep by reversing the SDE. Core function to propagate the diffusion
process from the learned model outputs (most often the predicted noise).`),vt=l(),g=s("p"),bt=a("This function calls "),me=s("code"),St=a("step_prk()"),$t=a(" or "),ge=s("code"),Dt=a("step_plms()"),Pt=a(" depending on the internal variable "),_e=s("code"),wt=a("counter"),yt=a("."),xt=l(),C=s("div"),P(J.$$.fragment),Et=l(),ve=s("p"),Mt=a(`Step function propagating the sample with the linear multi-step method. This has one forward pass with multiple
times to approximate the solution.`),Nt=l(),L=s("div"),P(Y.$$.fragment),kt=l(),be=s("p"),Tt=a(`Step function propagating the sample with the Runge-Kutta method. RK takes 4 forward passes to approximate the
solution to the differential equation.`),this.h()},l(t){const m=pr('[data-svelte="svelte-1phssyn"]',document.head);b=o(m,"META",{name:!0,content:!0}),m.forEach(r),Se=p(t),S=o(t,"H1",{class:!0});var xe=n(S);N=o(xe,"A",{id:!0,class:!0,href:!0});var Ct=n(N);re=o(Ct,"SPAN",{});var Lt=n(re);w(I.$$.fragment,Lt),Lt.forEach(r),Ct.forEach(r),Ae=p(xe),se=o(xe,"SPAN",{});var qt=n(se);Ce=i(qt,"Pseudo numerical methods for diffusion models (PNDM)"),qt.forEach(r),xe.forEach(r),$e=p(t),$=o(t,"H2",{class:!0});var Ee=n($);k=o(Ee,"A",{id:!0,class:!0,href:!0});var It=n(k);oe=o(It,"SPAN",{});var Rt=n(oe);w(R.$$.fragment,Rt),Rt.forEach(r),It.forEach(r),Le=p(Ee),ne=o(Ee,"SPAN",{});var Kt=n(ne);qe=i(Kt,"Overview"),Kt.forEach(r),Ee.forEach(r),De=p(t),T=o(t,"P",{});var Me=n(T);Ie=i(Me,"Original implementation can be found "),K=o(Me,"A",{href:!0,rel:!0});var Vt=n(K);Re=i(Vt,"here"),Vt.forEach(r),Ke=i(Me,"."),Me.forEach(r),Pe=p(t),D=o(t,"H2",{class:!0});var Ne=n(D);O=o(Ne,"A",{id:!0,class:!0,href:!0});var Wt=n(O);ae=o(Wt,"SPAN",{});var Ht=n(ae);w(V.$$.fragment,Ht),Ht.forEach(r),Wt.forEach(r),Ve=p(Ne),ie=o(Ne,"SPAN",{});var Ut=n(ie);We=i(Ut,"PNDMScheduler"),Ut.forEach(r),Ne.forEach(r),we=p(t),c=o(t,"DIV",{class:!0});var f=n(c);w(W.$$.fragment,f),He=p(f),de=o(f,"P",{});var Bt=n(de);Ue=i(Bt,`Pseudo numerical methods for diffusion models (PNDM) proposes using more advanced ODE integration techniques,
namely Runge-Kutta method and a linear multi-step method.`),Bt.forEach(r),Be=p(f),u=o(f,"P",{});var h=n(u);j=o(h,"A",{href:!0});var Gt=n(j);Ge=i(Gt,"~ConfigMixin"),Gt.forEach(r),Je=i(h," takes care of storing all config attributes that are passed in the scheduler\u2019s "),ce=o(h,"CODE",{});var Jt=n(ce);Ye=i(Jt,"__init__"),Jt.forEach(r),je=i(h,`
function, such as `),le=o(h,"CODE",{});var Yt=n(le);ze=i(Yt,"num_train_timesteps"),Yt.forEach(r),Qe=i(h,". They can be accessed via "),pe=o(h,"CODE",{});var jt=n(pe);Xe=i(jt,"scheduler.config.num_train_timesteps"),jt.forEach(r),Ze=i(h,`.
`),z=o(h,"A",{href:!0});var zt=n(z);et=i(zt,"SchedulerMixin"),zt.forEach(r),tt=i(h," provides general loading and saving functionality via the "),Q=o(h,"A",{href:!0});var Qt=n(Q);rt=i(Qt,"SchedulerMixin.save_pretrained()"),Qt.forEach(r),st=i(h,` and
`),X=o(h,"A",{href:!0});var Xt=n(X);ot=i(Xt,"from_pretrained()"),Xt.forEach(r),nt=i(h," functions."),h.forEach(r),at=p(f),Z=o(f,"P",{});var Ot=n(Z);it=i(Ot,"For more details, see the original paper: "),H=o(Ot,"A",{href:!0,rel:!0});var Zt=n(H);dt=i(Zt,"https://arxiv.org/abs/2202.09778"),Zt.forEach(r),Ot.forEach(r),ct=p(f),F=o(f,"DIV",{class:!0});var ke=n(F);w(U.$$.fragment,ke),lt=p(ke),ue=o(ke,"P",{});var er=n(ue);pt=i(er,`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
current timestep.`),er.forEach(r),ke.forEach(r),ut=p(f),A=o(f,"DIV",{class:!0});var Te=n(A);w(B.$$.fragment,Te),ft=p(Te),fe=o(Te,"P",{});var tr=n(fe);ht=i(tr,"Sets the discrete timesteps used for the diffusion chain. Supporting function to be run before inference."),tr.forEach(r),Te.forEach(r),mt=p(f),_=o(f,"DIV",{class:!0});var ee=n(_);w(G.$$.fragment,ee),gt=p(ee),he=o(ee,"P",{});var rr=n(he);_t=i(rr,`Predict the sample at the previous timestep by reversing the SDE. Core function to propagate the diffusion
process from the learned model outputs (most often the predicted noise).`),rr.forEach(r),vt=p(ee),g=o(ee,"P",{});var q=n(g);bt=i(q,"This function calls "),me=o(q,"CODE",{});var sr=n(me);St=i(sr,"step_prk()"),sr.forEach(r),$t=i(q," or "),ge=o(q,"CODE",{});var or=n(ge);Dt=i(or,"step_plms()"),or.forEach(r),Pt=i(q," depending on the internal variable "),_e=o(q,"CODE",{});var nr=n(_e);wt=i(nr,"counter"),nr.forEach(r),yt=i(q,"."),q.forEach(r),ee.forEach(r),xt=p(f),C=o(f,"DIV",{class:!0});var Oe=n(C);w(J.$$.fragment,Oe),Et=p(Oe),ve=o(Oe,"P",{});var ar=n(ve);Mt=i(ar,`Step function propagating the sample with the linear multi-step method. This has one forward pass with multiple
times to approximate the solution.`),ar.forEach(r),Oe.forEach(r),Nt=p(f),L=o(f,"DIV",{class:!0});var Fe=n(L);w(Y.$$.fragment,Fe),kt=p(Fe),be=o(Fe,"P",{});var ir=n(be);Tt=i(ir,`Step function propagating the sample with the Runge-Kutta method. RK takes 4 forward passes to approximate the
solution to the differential equation.`),ir.forEach(r),Fe.forEach(r),f.forEach(r),this.h()},h(){d(b,"name","hf:doc:metadata"),d(b,"content",JSON.stringify(mr)),d(N,"id","pseudo-numerical-methods-for-diffusion-models-pndm"),d(N,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(N,"href","#pseudo-numerical-methods-for-diffusion-models-pndm"),d(S,"class","relative group"),d(k,"id","overview"),d(k,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(k,"href","#overview"),d($,"class","relative group"),d(K,"href","https://github.com/crowsonkb/k-diffusion/blob/481677d114f6ea445aa009cf5bd7a9cdee909e47/k_diffusion/sampling.py#L181"),d(K,"rel","nofollow"),d(O,"id","diffusers.PNDMScheduler"),d(O,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),d(O,"href","#diffusers.PNDMScheduler"),d(D,"class","relative group"),d(j,"href","/docs/diffusers/main/en/api/configuration#diffusers.ConfigMixin"),d(z,"href","/docs/diffusers/main/en/api/schedulers/overview#diffusers.SchedulerMixin"),d(Q,"href","/docs/diffusers/main/en/api/schedulers/overview#diffusers.SchedulerMixin.save_pretrained"),d(X,"href","/docs/diffusers/main/en/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained"),d(H,"href","https://arxiv.org/abs/2202.09778"),d(H,"rel","nofollow"),d(F,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),d(A,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),d(_,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),d(C,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),d(L,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),d(c,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(t,m){e(document.head,b),v(t,Se,m),v(t,S,m),e(S,N),e(N,re),y(I,re,null),e(S,Ae),e(S,se),e(se,Ce),v(t,$e,m),v(t,$,m),e($,k),e(k,oe),y(R,oe,null),e($,Le),e($,ne),e(ne,qe),v(t,De,m),v(t,T,m),e(T,Ie),e(T,K),e(K,Re),e(T,Ke),v(t,Pe,m),v(t,D,m),e(D,O),e(O,ae),y(V,ae,null),e(D,Ve),e(D,ie),e(ie,We),v(t,we,m),v(t,c,m),y(W,c,null),e(c,He),e(c,de),e(de,Ue),e(c,Be),e(c,u),e(u,j),e(j,Ge),e(u,Je),e(u,ce),e(ce,Ye),e(u,je),e(u,le),e(le,ze),e(u,Qe),e(u,pe),e(pe,Xe),e(u,Ze),e(u,z),e(z,et),e(u,tt),e(u,Q),e(Q,rt),e(u,st),e(u,X),e(X,ot),e(u,nt),e(c,at),e(c,Z),e(Z,it),e(Z,H),e(H,dt),e(c,ct),e(c,F),y(U,F,null),e(F,lt),e(F,ue),e(ue,pt),e(c,ut),e(c,A),y(B,A,null),e(A,ft),e(A,fe),e(fe,ht),e(c,mt),e(c,_),y(G,_,null),e(_,gt),e(_,he),e(he,_t),e(_,vt),e(_,g),e(g,bt),e(g,me),e(me,St),e(g,$t),e(g,ge),e(ge,Dt),e(g,Pt),e(g,_e),e(_e,wt),e(g,yt),e(c,xt),e(c,C),y(J,C,null),e(C,Et),e(C,ve),e(ve,Mt),e(c,Nt),e(c,L),y(Y,L,null),e(L,kt),e(L,be),e(be,Tt),ye=!0},p:ur,i(t){ye||(x(I.$$.fragment,t),x(R.$$.fragment,t),x(V.$$.fragment,t),x(W.$$.fragment,t),x(U.$$.fragment,t),x(B.$$.fragment,t),x(G.$$.fragment,t),x(J.$$.fragment,t),x(Y.$$.fragment,t),ye=!0)},o(t){E(I.$$.fragment,t),E(R.$$.fragment,t),E(V.$$.fragment,t),E(W.$$.fragment,t),E(U.$$.fragment,t),E(B.$$.fragment,t),E(G.$$.fragment,t),E(J.$$.fragment,t),E(Y.$$.fragment,t),ye=!1},d(t){r(b),t&&r(Se),t&&r(S),M(I),t&&r($e),t&&r($),M(R),t&&r(De),t&&r(T),t&&r(Pe),t&&r(D),M(V),t&&r(we),t&&r(c),M(W),M(U),M(B),M(G),M(J),M(Y)}}}const mr={local:"pseudo-numerical-methods-for-diffusion-models-pndm",sections:[{local:"overview",title:"Overview"},{local:"diffusers.PNDMScheduler",title:"PNDMScheduler"}],title:"Pseudo numerical methods for diffusion models (PNDM)"};function gr(At){return fr(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Sr extends dr{constructor(b){super();cr(this,b,gr,hr,lr,{})}}export{Sr as default,mr as metadata};
