import{S as Wt,i as jt,s as zt,e as s,k as l,w as V,t as i,M as Bt,c as n,d as o,m as c,a as r,x as H,h as a,b as d,G as e,g as u,y as J,L as Yt,q as U,o as R,B as G,v as Kt}from"../../../chunks/vendor-hf-doc-builder.js";import{D as $e}from"../../../chunks/Docstring-hf-doc-builder.js";import{I as vt}from"../../../chunks/IconCopyLink-hf-doc-builder.js";function Qt(bt){let _,pe,v,y,X,E,Ee,Z,Te,fe,b,P,ee,T,Ae,te,Ne,he,A,N,Oe,Fe,ue,W,Ie,me,j,Ce,ge,x,Le,O,ke,qe,_e,D,w,oe,F,Ve,se,He,ve,p,I,Je,ne,Ue,Re,h,z,Ge,We,re,je,ze,ie,Be,Ye,ae,Ke,Qe,B,Xe,Ze,Y,et,tt,K,ot,st,nt,Q,rt,C,it,at,S,L,dt,de,lt,ct,M,k,pt,le,ft,ht,$,q,ut,ce,mt,be;return E=new vt({}),T=new vt({}),F=new vt({}),I=new $e({props:{name:"class diffusers.DDPMScheduler",anchor:"diffusers.DDPMScheduler",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:"variance_type",val:": str = 'fixed_small'"},{name:"clip_sample",val:": bool = True"},{name:"prediction_type",val:": str = 'epsilon'"},{name:"thresholding",val:": bool = False"},{name:"dynamic_thresholding_ratio",val:": float = 0.995"},{name:"clip_sample_range",val:": float = 1.0"},{name:"sample_max_value",val:": float = 1.0"},{name:"timestep_spacing",val:": str = 'leading'"},{name:"steps_offset",val:": int = 0"}],parametersDescription:[{anchor:"diffusers.DDPMScheduler.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.DDPMScheduler.beta_start",description:"<strong>beta_start</strong> (<code>float</code>) &#x2014; the starting <code>beta</code> value of inference.",name:"beta_start"},{anchor:"diffusers.DDPMScheduler.beta_end",description:"<strong>beta_end</strong> (<code>float</code>) &#x2014; the final <code>beta</code> value.",name:"beta_end"},{anchor:"diffusers.DDPMScheduler.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>, <code>squaredcos_cap_v2</code> or <code>sigmoid</code>.`,name:"beta_schedule"},{anchor:"diffusers.DDPMScheduler.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.DDPMScheduler.variance_type",description:`<strong>variance_type</strong> (<code>str</code>) &#x2014;
options to clip the variance used when adding noise to the denoised sample. Choose from <code>fixed_small</code>,
<code>fixed_small_log</code>, <code>fixed_large</code>, <code>fixed_large_log</code>, <code>learned</code> or <code>learned_range</code>.`,name:"variance_type"},{anchor:"diffusers.DDPMScheduler.clip_sample",description:`<strong>clip_sample</strong> (<code>bool</code>, default <code>True</code>) &#x2014;
option to clip predicted sample for numerical stability.`,name:"clip_sample"},{anchor:"diffusers.DDPMScheduler.clip_sample_range",description:`<strong>clip_sample_range</strong> (<code>float</code>, default <code>1.0</code>) &#x2014;
the maximum magnitude for sample clipping. Valid only when <code>clip_sample=True</code>.`,name:"clip_sample_range"},{anchor:"diffusers.DDPMScheduler.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), <code>sample</code> (directly predicting the noisy sample<code>) or </code>v_prediction\` (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.DDPMScheduler.thresholding",description:`<strong>thresholding</strong> (<code>bool</code>, default <code>False</code>) &#x2014;
whether to use the &#x201C;dynamic thresholding&#x201D; method (introduced by Imagen, <a href="https://arxiv.org/abs/2205.11487" rel="nofollow">https://arxiv.org/abs/2205.11487</a>).
Note that the thresholding method is unsuitable for latent-space diffusion models (such as
stable-diffusion).`,name:"thresholding"},{anchor:"diffusers.DDPMScheduler.dynamic_thresholding_ratio",description:`<strong>dynamic_thresholding_ratio</strong> (<code>float</code>, default <code>0.995</code>) &#x2014;
the ratio for the dynamic thresholding method. Default is <code>0.995</code>, the same as Imagen
(<a href="https://arxiv.org/abs/2205.11487" rel="nofollow">https://arxiv.org/abs/2205.11487</a>). Valid only when <code>thresholding=True</code>.`,name:"dynamic_thresholding_ratio"},{anchor:"diffusers.DDPMScheduler.sample_max_value",description:`<strong>sample_max_value</strong> (<code>float</code>, default <code>1.0</code>) &#x2014;
the threshold value for dynamic thresholding. Valid only when <code>thresholding=True</code>.`,name:"sample_max_value"},{anchor:"diffusers.DDPMScheduler.timestep_spacing",description:`<strong>timestep_spacing</strong> (<code>str</code>, default <code>&quot;leading&quot;</code>) &#x2014;
The way the timesteps should be scaled. Refer to Table 2. of <a href="https://arxiv.org/abs/2305.08891" rel="nofollow">Common Diffusion Noise Schedules and Sample
Steps are Flawed</a> for more information.`,name:"timestep_spacing"},{anchor:"diffusers.DDPMScheduler.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/v0.19.2/src/diffusers/schedulers/scheduling_ddpm.py#L91"}}),L=new $e({props:{name:"scale_model_input",anchor:"diffusers.DDPMScheduler.scale_model_input",parameters:[{name:"sample",val:": FloatTensor"},{name:"timestep",val:": typing.Optional[int] = None"}],parametersDescription:[{anchor:"diffusers.DDPMScheduler.scale_model_input.sample",description:"<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014; input sample",name:"sample"},{anchor:"diffusers.DDPMScheduler.scale_model_input.timestep",description:"<strong>timestep</strong> (<code>int</code>, optional) &#x2014; current timestep",name:"timestep"}],source:"https://github.com/huggingface/diffusers/blob/v0.19.2/src/diffusers/schedulers/scheduling_ddpm.py#L195",returnDescription:`
<p>scaled input sample</p>
`,returnType:`
<p><code>torch.FloatTensor</code></p>
`}}),k=new $e({props:{name:"set_timesteps",anchor:"diffusers.DDPMScheduler.set_timesteps",parameters:[{name:"num_inference_steps",val:": typing.Optional[int] = None"},{name:"device",val:": typing.Union[str, torch.device] = None"},{name:"timesteps",val:": typing.Optional[typing.List[int]] = None"}],parametersDescription:[{anchor:"diffusers.DDPMScheduler.set_timesteps.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>Optional[int]</code>) &#x2014;
the number of diffusion steps used when generating samples with a pre-trained model. If passed, then
<code>timesteps</code> must be <code>None</code>.`,name:"num_inference_steps"},{anchor:"diffusers.DDPMScheduler.set_timesteps.device",description:`<strong>device</strong> (<code>str</code> or <code>torch.device</code>, optional) &#x2014;
the device to which the timesteps are moved to.`,name:"device"},{anchor:"diffusers.DDPMScheduler.set_timesteps.custom_timesteps",description:`<strong>custom_timesteps</strong> (<code>List[int]</code>, optional) &#x2014;
custom timesteps used to support arbitrary spacing between timesteps. If <code>None</code>, then the default
timestep spacing strategy of equal spacing between timesteps is used. If passed, <code>num_inference_steps</code>
must be <code>None</code>.`,name:"custom_timesteps"}],source:"https://github.com/huggingface/diffusers/blob/v0.19.2/src/diffusers/schedulers/scheduling_ddpm.py#L209"}}),q=new $e({props:{name:"step",anchor:"diffusers.DDPMScheduler.step",parameters:[{name:"model_output",val:": FloatTensor"},{name:"timestep",val:": int"},{name:"sample",val:": FloatTensor"},{name:"generator",val:" = None"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.DDPMScheduler.step.model_output",description:"<strong>model_output</strong> (<code>torch.FloatTensor</code>) &#x2014; direct output from learned diffusion model.",name:"model_output"},{anchor:"diffusers.DDPMScheduler.step.timestep",description:"<strong>timestep</strong> (<code>int</code>) &#x2014; current discrete timestep in the diffusion chain.",name:"timestep"},{anchor:"diffusers.DDPMScheduler.step.sample",description:`<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014;
current instance of sample being created by diffusion process.
generator &#x2014; random number generator.`,name:"sample"},{anchor:"diffusers.DDPMScheduler.step.return_dict",description:"<strong>return_dict</strong> (<code>bool</code>) &#x2014; option for returning tuple rather than DDPMSchedulerOutput class",name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/v0.19.2/src/diffusers/schedulers/scheduling_ddpm.py#L358",returnDescription:`
<p><code>~schedulers.scheduling_utils.DDPMSchedulerOutput</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>~schedulers.scheduling_utils.DDPMSchedulerOutput</code> or <code>tuple</code></p>
`}}),{c(){_=s("meta"),pe=l(),v=s("h1"),y=s("a"),X=s("span"),V(E.$$.fragment),Ee=l(),Z=s("span"),Te=i("Denoising Diffusion Probabilistic Models (DDPM)"),fe=l(),b=s("h2"),P=s("a"),ee=s("span"),V(T.$$.fragment),Ae=l(),te=s("span"),Ne=i("Overview"),he=l(),A=s("p"),N=s("a"),Oe=i("Denoising Diffusion Probabilistic Models"),Fe=i(`
(DDPM) by Jonathan Ho, Ajay Jain and Pieter Abbeel proposes the diffusion based model of the same name, but in the context of the \u{1F917} Diffusers library, DDPM refers to the discrete denoising scheduler from the paper as well as the pipeline.`),ue=l(),W=s("p"),Ie=i("The abstract of the paper is the following:"),me=l(),j=s("p"),Ce=i("We present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models inspired by considerations from nonequilibrium thermodynamics. Our best results are obtained by training on a weighted variational bound designed according to a novel connection between diffusion probabilistic models and denoising score matching with Langevin dynamics, and our models naturally admit a progressive lossy decompression scheme that can be interpreted as a generalization of autoregressive decoding. On the unconditional CIFAR10 dataset, we obtain an Inception score of 9.46 and a state-of-the-art FID score of 3.17. On 256x256 LSUN, we obtain sample quality similar to ProgressiveGAN."),ge=l(),x=s("p"),Le=i("The original paper can be found "),O=s("a"),ke=i("here"),qe=i("."),_e=l(),D=s("h2"),w=s("a"),oe=s("span"),V(F.$$.fragment),Ve=l(),se=s("span"),He=i("DDPMScheduler"),ve=l(),p=s("div"),V(I.$$.fragment),Je=l(),ne=s("p"),Ue=i(`Denoising diffusion probabilistic models (DDPMs) explores the connections between denoising score matching and
Langevin dynamics sampling.`),Re=l(),h=s("p"),z=s("a"),Ge=i("~ConfigMixin"),We=i(" takes care of storing all config attributes that are passed in the scheduler\u2019s "),re=s("code"),je=i("__init__"),ze=i(`
function, such as `),ie=s("code"),Be=i("num_train_timesteps"),Ye=i(". They can be accessed via "),ae=s("code"),Ke=i("scheduler.config.num_train_timesteps"),Qe=i(`.
`),B=s("a"),Xe=i("SchedulerMixin"),Ze=i(" provides general loading and saving functionality via the "),Y=s("a"),et=i("SchedulerMixin.save_pretrained()"),tt=i(` and
`),K=s("a"),ot=i("from_pretrained()"),st=i(" functions."),nt=l(),Q=s("p"),rt=i("For more details, see the original paper: "),C=s("a"),it=i("https://arxiv.org/abs/2006.11239"),at=l(),S=s("div"),V(L.$$.fragment),dt=l(),de=s("p"),lt=i(`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
current timestep.`),ct=l(),M=s("div"),V(k.$$.fragment),pt=l(),le=s("p"),ft=i("Sets the discrete timesteps used for the diffusion chain. Supporting function to be run before inference."),ht=l(),$=s("div"),V(q.$$.fragment),ut=l(),ce=s("p"),mt=i(`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).`),this.h()},l(t){const f=Bt('[data-svelte="svelte-1phssyn"]',document.head);_=n(f,"META",{name:!0,content:!0}),f.forEach(o),pe=c(t),v=n(t,"H1",{class:!0});var De=r(v);y=n(De,"A",{id:!0,class:!0,href:!0});var Dt=r(y);X=n(Dt,"SPAN",{});var yt=r(X);H(E.$$.fragment,yt),yt.forEach(o),Dt.forEach(o),Ee=c(De),Z=n(De,"SPAN",{});var Pt=r(Z);Te=a(Pt,"Denoising Diffusion Probabilistic Models (DDPM)"),Pt.forEach(o),De.forEach(o),fe=c(t),b=n(t,"H2",{class:!0});var ye=r(b);P=n(ye,"A",{id:!0,class:!0,href:!0});var xt=r(P);ee=n(xt,"SPAN",{});var wt=r(ee);H(T.$$.fragment,wt),wt.forEach(o),xt.forEach(o),Ae=c(ye),te=n(ye,"SPAN",{});var St=r(te);Ne=a(St,"Overview"),St.forEach(o),ye.forEach(o),he=c(t),A=n(t,"P",{});var gt=r(A);N=n(gt,"A",{href:!0,rel:!0});var Mt=r(N);Oe=a(Mt,"Denoising Diffusion Probabilistic Models"),Mt.forEach(o),Fe=a(gt,`
(DDPM) by Jonathan Ho, Ajay Jain and Pieter Abbeel proposes the diffusion based model of the same name, but in the context of the \u{1F917} Diffusers library, DDPM refers to the discrete denoising scheduler from the paper as well as the pipeline.`),gt.forEach(o),ue=c(t),W=n(t,"P",{});var $t=r(W);Ie=a($t,"The abstract of the paper is the following:"),$t.forEach(o),me=c(t),j=n(t,"P",{});var Et=r(j);Ce=a(Et,"We present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models inspired by considerations from nonequilibrium thermodynamics. Our best results are obtained by training on a weighted variational bound designed according to a novel connection between diffusion probabilistic models and denoising score matching with Langevin dynamics, and our models naturally admit a progressive lossy decompression scheme that can be interpreted as a generalization of autoregressive decoding. On the unconditional CIFAR10 dataset, we obtain an Inception score of 9.46 and a state-of-the-art FID score of 3.17. On 256x256 LSUN, we obtain sample quality similar to ProgressiveGAN."),Et.forEach(o),ge=c(t),x=n(t,"P",{});var Pe=r(x);Le=a(Pe,"The original paper can be found "),O=n(Pe,"A",{href:!0,rel:!0});var Tt=r(O);ke=a(Tt,"here"),Tt.forEach(o),qe=a(Pe,"."),Pe.forEach(o),_e=c(t),D=n(t,"H2",{class:!0});var xe=r(D);w=n(xe,"A",{id:!0,class:!0,href:!0});var At=r(w);oe=n(At,"SPAN",{});var Nt=r(oe);H(F.$$.fragment,Nt),Nt.forEach(o),At.forEach(o),Ve=c(xe),se=n(xe,"SPAN",{});var Ot=r(se);He=a(Ot,"DDPMScheduler"),Ot.forEach(o),xe.forEach(o),ve=c(t),p=n(t,"DIV",{class:!0});var g=r(p);H(I.$$.fragment,g),Je=c(g),ne=n(g,"P",{});var Ft=r(ne);Ue=a(Ft,`Denoising diffusion probabilistic models (DDPMs) explores the connections between denoising score matching and
Langevin dynamics sampling.`),Ft.forEach(o),Re=c(g),h=n(g,"P",{});var m=r(h);z=n(m,"A",{href:!0});var It=r(z);Ge=a(It,"~ConfigMixin"),It.forEach(o),We=a(m," takes care of storing all config attributes that are passed in the scheduler\u2019s "),re=n(m,"CODE",{});var Ct=r(re);je=a(Ct,"__init__"),Ct.forEach(o),ze=a(m,`
function, such as `),ie=n(m,"CODE",{});var Lt=r(ie);Be=a(Lt,"num_train_timesteps"),Lt.forEach(o),Ye=a(m,". They can be accessed via "),ae=n(m,"CODE",{});var kt=r(ae);Ke=a(kt,"scheduler.config.num_train_timesteps"),kt.forEach(o),Qe=a(m,`.
`),B=n(m,"A",{href:!0});var qt=r(B);Xe=a(qt,"SchedulerMixin"),qt.forEach(o),Ze=a(m," provides general loading and saving functionality via the "),Y=n(m,"A",{href:!0});var Vt=r(Y);et=a(Vt,"SchedulerMixin.save_pretrained()"),Vt.forEach(o),tt=a(m,` and
`),K=n(m,"A",{href:!0});var Ht=r(K);ot=a(Ht,"from_pretrained()"),Ht.forEach(o),st=a(m," functions."),m.forEach(o),nt=c(g),Q=n(g,"P",{});var _t=r(Q);rt=a(_t,"For more details, see the original paper: "),C=n(_t,"A",{href:!0,rel:!0});var Jt=r(C);it=a(Jt,"https://arxiv.org/abs/2006.11239"),Jt.forEach(o),_t.forEach(o),at=c(g),S=n(g,"DIV",{class:!0});var we=r(S);H(L.$$.fragment,we),dt=c(we),de=n(we,"P",{});var Ut=r(de);lt=a(Ut,`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
current timestep.`),Ut.forEach(o),we.forEach(o),ct=c(g),M=n(g,"DIV",{class:!0});var Se=r(M);H(k.$$.fragment,Se),pt=c(Se),le=n(Se,"P",{});var Rt=r(le);ft=a(Rt,"Sets the discrete timesteps used for the diffusion chain. Supporting function to be run before inference."),Rt.forEach(o),Se.forEach(o),ht=c(g),$=n(g,"DIV",{class:!0});var Me=r($);H(q.$$.fragment,Me),ut=c(Me),ce=n(Me,"P",{});var Gt=r(ce);mt=a(Gt,`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).`),Gt.forEach(o),Me.forEach(o),g.forEach(o),this.h()},h(){d(_,"name","hf:doc:metadata"),d(_,"content",JSON.stringify(Xt)),d(y,"id","denoising-diffusion-probabilistic-models-ddpm"),d(y,"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(y,"href","#denoising-diffusion-probabilistic-models-ddpm"),d(v,"class","relative group"),d(P,"id","overview"),d(P,"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(P,"href","#overview"),d(b,"class","relative group"),d(N,"href","https://arxiv.org/abs/2006.11239"),d(N,"rel","nofollow"),d(O,"href","https://arxiv.org/abs/2010.02502"),d(O,"rel","nofollow"),d(w,"id","diffusers.DDPMScheduler"),d(w,"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(w,"href","#diffusers.DDPMScheduler"),d(D,"class","relative group"),d(z,"href","/docs/diffusers/v0.19.2/en/api/configuration#diffusers.ConfigMixin"),d(B,"href","/docs/diffusers/v0.19.2/en/api/schedulers/overview#diffusers.SchedulerMixin"),d(Y,"href","/docs/diffusers/v0.19.2/en/api/schedulers/overview#diffusers.SchedulerMixin.save_pretrained"),d(K,"href","/docs/diffusers/v0.19.2/en/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained"),d(C,"href","https://arxiv.org/abs/2006.11239"),d(C,"rel","nofollow"),d(S,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),d(M,"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(p,"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,f){e(document.head,_),u(t,pe,f),u(t,v,f),e(v,y),e(y,X),J(E,X,null),e(v,Ee),e(v,Z),e(Z,Te),u(t,fe,f),u(t,b,f),e(b,P),e(P,ee),J(T,ee,null),e(b,Ae),e(b,te),e(te,Ne),u(t,he,f),u(t,A,f),e(A,N),e(N,Oe),e(A,Fe),u(t,ue,f),u(t,W,f),e(W,Ie),u(t,me,f),u(t,j,f),e(j,Ce),u(t,ge,f),u(t,x,f),e(x,Le),e(x,O),e(O,ke),e(x,qe),u(t,_e,f),u(t,D,f),e(D,w),e(w,oe),J(F,oe,null),e(D,Ve),e(D,se),e(se,He),u(t,ve,f),u(t,p,f),J(I,p,null),e(p,Je),e(p,ne),e(ne,Ue),e(p,Re),e(p,h),e(h,z),e(z,Ge),e(h,We),e(h,re),e(re,je),e(h,ze),e(h,ie),e(ie,Be),e(h,Ye),e(h,ae),e(ae,Ke),e(h,Qe),e(h,B),e(B,Xe),e(h,Ze),e(h,Y),e(Y,et),e(h,tt),e(h,K),e(K,ot),e(h,st),e(p,nt),e(p,Q),e(Q,rt),e(Q,C),e(C,it),e(p,at),e(p,S),J(L,S,null),e(S,dt),e(S,de),e(de,lt),e(p,ct),e(p,M),J(k,M,null),e(M,pt),e(M,le),e(le,ft),e(p,ht),e(p,$),J(q,$,null),e($,ut),e($,ce),e(ce,mt),be=!0},p:Yt,i(t){be||(U(E.$$.fragment,t),U(T.$$.fragment,t),U(F.$$.fragment,t),U(I.$$.fragment,t),U(L.$$.fragment,t),U(k.$$.fragment,t),U(q.$$.fragment,t),be=!0)},o(t){R(E.$$.fragment,t),R(T.$$.fragment,t),R(F.$$.fragment,t),R(I.$$.fragment,t),R(L.$$.fragment,t),R(k.$$.fragment,t),R(q.$$.fragment,t),be=!1},d(t){o(_),t&&o(pe),t&&o(v),G(E),t&&o(fe),t&&o(b),G(T),t&&o(he),t&&o(A),t&&o(ue),t&&o(W),t&&o(me),t&&o(j),t&&o(ge),t&&o(x),t&&o(_e),t&&o(D),G(F),t&&o(ve),t&&o(p),G(I),G(L),G(k),G(q)}}}const Xt={local:"denoising-diffusion-probabilistic-models-ddpm",sections:[{local:"overview",title:"Overview"},{local:"diffusers.DDPMScheduler",title:"DDPMScheduler"}],title:"Denoising Diffusion Probabilistic Models (DDPM)"};function Zt(bt){return Kt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class so extends Wt{constructor(_){super();jt(this,_,Zt,Qt,zt,{})}}export{so as default,Xt as metadata};
