import{s as _e,o as ge,n as be}from"../chunks/scheduler.8c3d61f6.js";import{S as Te,i as ve,g as i,s as r,r as u,A as $e,h as d,f as n,c as a,j as F,u as h,x as v,k as V,y as z,a as o,v as _,d as g,t as b,w as T}from"../chunks/index.589a98e8.js";import{T as De}from"../chunks/Tip.42aa8582.js";import{D as ae}from"../chunks/Docstring.27406313.js";import{H as ie,E as Me}from"../chunks/EditOnGithub.e5a8d9cb.js";function we(U){let s,$="It is assumed one of the input classes is the masked latent pixel. The predicted classes of the unnoised image don’t contain a prediction for the masked pixel because the unnoised image cannot be masked.";return{c(){s=i("p"),s.textContent=$},l(l){s=d(l,"P",{"data-svelte-h":!0}),v(s)!=="svelte-3w1alv"&&(s.textContent=$)},m(l,I){o(l,s,I)},p:be,d(l){l&&n(s)}}}function xe(U){let s,$,l,I,D,S,M,de='A Transformer model for image-like data from <a href="https://huggingface.co/CompVis" rel="nofollow">CompVis</a> that is based on the <a href="https://huggingface.co/papers/2010.11929" rel="nofollow">Vision Transformer</a> introduced by Dosovitskiy et al. The <a href="/docs/diffusers/pr_8436/en/api/models/transformer2d#diffusers.Transformer2DModel">Transformer2DModel</a> accepts discrete (classes of vector embeddings) or continuous (actual embeddings) inputs.',W,w,le="When the input is <strong>continuous</strong>:",B,x,me="<li>Project the input and reshape it to <code>(batch_size, sequence_length, feature_dimension)</code>.</li> <li>Apply the Transformer blocks in the standard way.</li> <li>Reshape to image.</li>",R,y,ce="When the input is <strong>discrete</strong>:",G,f,Z,k,fe="<li>Convert input (classes of latent pixels) to embeddings and apply positional embeddings.</li> <li>Apply the Transformer blocks in the standard way.</li> <li>Predict classes of unnoised image.</li>",J,O,K,m,L,oe,E,pe="A 2D Transformer model for image-like data.",se,p,C,re,q,ue='The <a href="/docs/diffusers/pr_8436/en/api/models/transformer2d#diffusers.Transformer2DModel">Transformer2DModel</a> forward method.',Q,N,X,P,A,Y,H,ee,j,te;return D=new ie({props:{title:"Transformer2DModel",local:"transformer2dmodel",headingTag:"h1"}}),f=new De({props:{$$slots:{default:[we]},$$scope:{ctx:U}}}),O=new ie({props:{title:"Transformer2DModel",local:"diffusers.Transformer2DModel",headingTag:"h2"}}),L=new ae({props:{name:"class diffusers.Transformer2DModel",anchor:"diffusers.Transformer2DModel",parameters:[{name:"num_attention_heads",val:": int = 16"},{name:"attention_head_dim",val:": int = 88"},{name:"in_channels",val:": Optional = None"},{name:"out_channels",val:": Optional = None"},{name:"num_layers",val:": int = 1"},{name:"dropout",val:": float = 0.0"},{name:"norm_num_groups",val:": int = 32"},{name:"cross_attention_dim",val:": Optional = None"},{name:"attention_bias",val:": bool = False"},{name:"sample_size",val:": Optional = None"},{name:"num_vector_embeds",val:": Optional = None"},{name:"patch_size",val:": Optional = None"},{name:"activation_fn",val:": str = 'geglu'"},{name:"num_embeds_ada_norm",val:": Optional = None"},{name:"use_linear_projection",val:": bool = False"},{name:"only_cross_attention",val:": bool = False"},{name:"double_self_attention",val:": bool = False"},{name:"upcast_attention",val:": bool = False"},{name:"norm_type",val:": str = 'layer_norm'"},{name:"norm_elementwise_affine",val:": bool = True"},{name:"norm_eps",val:": float = 1e-05"},{name:"attention_type",val:": str = 'default'"},{name:"caption_channels",val:": int = None"},{name:"interpolation_scale",val:": float = None"},{name:"use_additional_conditions",val:": Optional = None"}],parametersDescription:[{anchor:"diffusers.Transformer2DModel.num_attention_heads",description:"<strong>num_attention_heads</strong> (<code>int</code>, <em>optional</em>, defaults to 16) &#x2014; The number of heads to use for multi-head attention.",name:"num_attention_heads"},{anchor:"diffusers.Transformer2DModel.attention_head_dim",description:"<strong>attention_head_dim</strong> (<code>int</code>, <em>optional</em>, defaults to 88) &#x2014; The number of channels in each head.",name:"attention_head_dim"},{anchor:"diffusers.Transformer2DModel.in_channels",description:`<strong>in_channels</strong> (<code>int</code>, <em>optional</em>) &#x2014;
The number of channels in the input and output (specify if the input is <strong>continuous</strong>).`,name:"in_channels"},{anchor:"diffusers.Transformer2DModel.num_layers",description:"<strong>num_layers</strong> (<code>int</code>, <em>optional</em>, defaults to 1) &#x2014; The number of layers of Transformer blocks to use.",name:"num_layers"},{anchor:"diffusers.Transformer2DModel.dropout",description:"<strong>dropout</strong> (<code>float</code>, <em>optional</em>, defaults to 0.0) &#x2014; The dropout probability to use.",name:"dropout"},{anchor:"diffusers.Transformer2DModel.cross_attention_dim",description:"<strong>cross_attention_dim</strong> (<code>int</code>, <em>optional</em>) &#x2014; The number of <code>encoder_hidden_states</code> dimensions to use.",name:"cross_attention_dim"},{anchor:"diffusers.Transformer2DModel.sample_size",description:`<strong>sample_size</strong> (<code>int</code>, <em>optional</em>) &#x2014; The width of the latent images (specify if the input is <strong>discrete</strong>).
This is fixed during training since it is used to learn a number of position embeddings.`,name:"sample_size"},{anchor:"diffusers.Transformer2DModel.num_vector_embeds",description:`<strong>num_vector_embeds</strong> (<code>int</code>, <em>optional</em>) &#x2014;
The number of classes of the vector embeddings of the latent pixels (specify if the input is <strong>discrete</strong>).
Includes the class for the masked latent pixel.`,name:"num_vector_embeds"},{anchor:"diffusers.Transformer2DModel.activation_fn",description:"<strong>activation_fn</strong> (<code>str</code>, <em>optional</em>, defaults to <code>&quot;geglu&quot;</code>) &#x2014; Activation function to use in feed-forward.",name:"activation_fn"},{anchor:"diffusers.Transformer2DModel.num_embeds_ada_norm",description:`<strong>num_embeds_ada_norm</strong> ( <code>int</code>, <em>optional</em>) &#x2014;
The number of diffusion steps used during training. Pass if at least one of the norm_layers is
<code>AdaLayerNorm</code>. This is fixed during training since it is used to learn a number of embeddings that are
added to the hidden states.</p>
<p>During inference, you can denoise for up to but not more steps than <code>num_embeds_ada_norm</code>.`,name:"num_embeds_ada_norm"},{anchor:"diffusers.Transformer2DModel.attention_bias",description:`<strong>attention_bias</strong> (<code>bool</code>, <em>optional</em>) &#x2014;
Configure if the <code>TransformerBlocks</code> attention should contain a bias parameter.`,name:"attention_bias"}],source:"https://github.com/huggingface/diffusers/blob/vr_8436/src/diffusers/models/transformers/transformer_2d.py#L37"}}),C=new ae({props:{name:"forward",anchor:"diffusers.Transformer2DModel.forward",parameters:[{name:"hidden_states",val:": Tensor"},{name:"encoder_hidden_states",val:": Optional = None"},{name:"timestep",val:": Optional = None"},{name:"added_cond_kwargs",val:": Dict = None"},{name:"class_labels",val:": Optional = None"},{name:"cross_attention_kwargs",val:": Dict = None"},{name:"attention_mask",val:": Optional = None"},{name:"encoder_attention_mask",val:": Optional = None"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.Transformer2DModel.forward.hidden_states",description:`<strong>hidden_states</strong> (<code>torch.LongTensor</code> of shape <code>(batch size, num latent pixels)</code> if discrete, <code>torch.Tensor</code> of shape <code>(batch size, channel, height, width)</code> if continuous) &#x2014;
Input <code>hidden_states</code>.`,name:"hidden_states"},{anchor:"diffusers.Transformer2DModel.forward.encoder_hidden_states",description:`<strong>encoder_hidden_states</strong> ( <code>torch.Tensor</code> of shape <code>(batch size, sequence len, embed dims)</code>, <em>optional</em>) &#x2014;
Conditional embeddings for cross attention layer. If not given, cross-attention defaults to
self-attention.`,name:"encoder_hidden_states"},{anchor:"diffusers.Transformer2DModel.forward.timestep",description:`<strong>timestep</strong> ( <code>torch.LongTensor</code>, <em>optional</em>) &#x2014;
Used to indicate denoising step. Optional timestep to be applied as an embedding in <code>AdaLayerNorm</code>.`,name:"timestep"},{anchor:"diffusers.Transformer2DModel.forward.class_labels",description:`<strong>class_labels</strong> ( <code>torch.LongTensor</code> of shape <code>(batch size, num classes)</code>, <em>optional</em>) &#x2014;
Used to indicate class labels conditioning. Optional class labels to be applied as an embedding in
<code>AdaLayerZeroNorm</code>.`,name:"class_labels"},{anchor:"diffusers.Transformer2DModel.forward.cross_attention_kwargs",description:`<strong>cross_attention_kwargs</strong> ( <code>Dict[str, Any]</code>, <em>optional</em>) &#x2014;
A kwargs dictionary that if specified is passed along to the <code>AttentionProcessor</code> as defined under
<code>self.processor</code> in
<a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py" rel="nofollow">diffusers.models.attention_processor</a>.`,name:"cross_attention_kwargs"},{anchor:"diffusers.Transformer2DModel.forward.attention_mask",description:`<strong>attention_mask</strong> ( <code>torch.Tensor</code>, <em>optional</em>) &#x2014;
An attention mask of shape <code>(batch, key_tokens)</code> is applied to <code>encoder_hidden_states</code>. If <code>1</code> the mask
is kept, otherwise if <code>0</code> it is discarded. Mask will be converted into a bias, which adds large
negative values to the attention scores corresponding to &#x201C;discard&#x201D; tokens.`,name:"attention_mask"},{anchor:"diffusers.Transformer2DModel.forward.encoder_attention_mask",description:`<strong>encoder_attention_mask</strong> ( <code>torch.Tensor</code>, <em>optional</em>) &#x2014;
Cross-attention mask applied to <code>encoder_hidden_states</code>. Two formats supported:</p>
<ul>
<li>Mask <code>(batch, sequence_length)</code> True = keep, False = discard.</li>
<li>Bias <code>(batch, 1, sequence_length)</code> 0 = keep, -10000 = discard.</li>
</ul>
<p>If <code>ndim == 2</code>: will be interpreted as a mask, then converted into a bias consistent with the format
above. This bias will be added to the cross-attention scores.`,name:"encoder_attention_mask"},{anchor:"diffusers.Transformer2DModel.forward.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) &#x2014;
Whether or not to return a <a href="/docs/diffusers/pr_8436/en/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.UNet2DConditionOutput">UNet2DConditionOutput</a> instead of a plain
tuple.`,name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/vr_8436/src/diffusers/models/transformers/transformer_2d.py#L325",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script>


<p>If <code>return_dict</code> is True, an <a
  href="/docs/diffusers/pr_8436/en/api/models/transformer2d#diffusers.models.transformers.transformer_2d.Transformer2DModelOutput"
>Transformer2DModelOutput</a> is returned,
otherwise a <code>tuple</code> where the first element is the sample tensor.</p>
`}}),N=new ie({props:{title:"Transformer2DModelOutput",local:"diffusers.models.transformers.transformer_2d.Transformer2DModelOutput",headingTag:"h2"}}),A=new ae({props:{name:"class diffusers.models.transformers.transformer_2d.Transformer2DModelOutput",anchor:"diffusers.models.transformers.transformer_2d.Transformer2DModelOutput",parameters:[{name:"sample",val:": torch.Tensor"}],source:"https://github.com/huggingface/diffusers/blob/vr_8436/src/diffusers/models/transformers/transformer_2d.py#L32"}}),H=new Me({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/models/transformer2d.md"}}),{c(){s=i("meta"),$=r(),l=i("p"),I=r(),u(D.$$.fragment),S=r(),M=i("p"),M.innerHTML=de,W=r(),w=i("p"),w.innerHTML=le,B=r(),x=i("ol"),x.innerHTML=me,R=r(),y=i("p"),y.innerHTML=ce,G=r(),u(f.$$.fragment),Z=r(),k=i("ol"),k.innerHTML=fe,J=r(),u(O.$$.fragment),K=r(),m=i("div"),u(L.$$.fragment),oe=r(),E=i("p"),E.textContent=pe,se=r(),p=i("div"),u(C.$$.fragment),re=r(),q=i("p"),q.innerHTML=ue,Q=r(),u(N.$$.fragment),X=r(),P=i("div"),u(A.$$.fragment),Y=r(),u(H.$$.fragment),ee=r(),j=i("p"),this.h()},l(e){const t=$e("svelte-u9bgzb",document.head);s=d(t,"META",{name:!0,content:!0}),t.forEach(n),$=a(e),l=d(e,"P",{}),F(l).forEach(n),I=a(e),h(D.$$.fragment,e),S=a(e),M=d(e,"P",{"data-svelte-h":!0}),v(M)!=="svelte-1jchegd"&&(M.innerHTML=de),W=a(e),w=d(e,"P",{"data-svelte-h":!0}),v(w)!=="svelte-ytlpm7"&&(w.innerHTML=le),B=a(e),x=d(e,"OL",{"data-svelte-h":!0}),v(x)!=="svelte-10ra9yx"&&(x.innerHTML=me),R=a(e),y=d(e,"P",{"data-svelte-h":!0}),v(y)!=="svelte-1wqmwav"&&(y.innerHTML=ce),G=a(e),h(f.$$.fragment,e),Z=a(e),k=d(e,"OL",{"data-svelte-h":!0}),v(k)!=="svelte-m2jel9"&&(k.innerHTML=fe),J=a(e),h(O.$$.fragment,e),K=a(e),m=d(e,"DIV",{class:!0});var c=F(m);h(L.$$.fragment,c),oe=a(c),E=d(c,"P",{"data-svelte-h":!0}),v(E)!=="svelte-1dpkeub"&&(E.textContent=pe),se=a(c),p=d(c,"DIV",{class:!0});var ne=F(p);h(C.$$.fragment,ne),re=a(ne),q=d(ne,"P",{"data-svelte-h":!0}),v(q)!=="svelte-omknej"&&(q.innerHTML=ue),ne.forEach(n),c.forEach(n),Q=a(e),h(N.$$.fragment,e),X=a(e),P=d(e,"DIV",{class:!0});var he=F(P);h(A.$$.fragment,he),he.forEach(n),Y=a(e),h(H.$$.fragment,e),ee=a(e),j=d(e,"P",{}),F(j).forEach(n),this.h()},h(){V(s,"name","hf:doc:metadata"),V(s,"content",ye),V(p,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),V(m,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),V(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(e,t){z(document.head,s),o(e,$,t),o(e,l,t),o(e,I,t),_(D,e,t),o(e,S,t),o(e,M,t),o(e,W,t),o(e,w,t),o(e,B,t),o(e,x,t),o(e,R,t),o(e,y,t),o(e,G,t),_(f,e,t),o(e,Z,t),o(e,k,t),o(e,J,t),_(O,e,t),o(e,K,t),o(e,m,t),_(L,m,null),z(m,oe),z(m,E),z(m,se),z(m,p),_(C,p,null),z(p,re),z(p,q),o(e,Q,t),_(N,e,t),o(e,X,t),o(e,P,t),_(A,P,null),o(e,Y,t),_(H,e,t),o(e,ee,t),o(e,j,t),te=!0},p(e,[t]){const c={};t&2&&(c.$$scope={dirty:t,ctx:e}),f.$set(c)},i(e){te||(g(D.$$.fragment,e),g(f.$$.fragment,e),g(O.$$.fragment,e),g(L.$$.fragment,e),g(C.$$.fragment,e),g(N.$$.fragment,e),g(A.$$.fragment,e),g(H.$$.fragment,e),te=!0)},o(e){b(D.$$.fragment,e),b(f.$$.fragment,e),b(O.$$.fragment,e),b(L.$$.fragment,e),b(C.$$.fragment,e),b(N.$$.fragment,e),b(A.$$.fragment,e),b(H.$$.fragment,e),te=!1},d(e){e&&(n($),n(l),n(I),n(S),n(M),n(W),n(w),n(B),n(x),n(R),n(y),n(G),n(Z),n(k),n(J),n(K),n(m),n(Q),n(X),n(P),n(Y),n(ee),n(j)),n(s),T(D,e),T(f,e),T(O,e),T(L),T(C),T(N,e),T(A),T(H,e)}}}const ye='{"title":"Transformer2DModel","local":"transformer2dmodel","sections":[{"title":"Transformer2DModel","local":"diffusers.Transformer2DModel","sections":[],"depth":2},{"title":"Transformer2DModelOutput","local":"diffusers.models.transformers.transformer_2d.Transformer2DModelOutput","sections":[],"depth":2}],"depth":1}';function ke(U){return ge(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ae extends Te{constructor(s){super(),ve(this,s,ke,xe,_e,{})}}export{Ae as component};
