# Transformer2DModel

نموذج Transformer لبيانات تشبه الصور من [CompVis](https://huggingface.co/CompVis) يعتمد على [Vision Transformer](https://huggingface.co/papers/2010.11929) الذي قدمه Dosovitskiy وآخرون. يقبل [Transformer2DModel](/docs/diffusers/v0.43.0/ar/api/models/transformer2d#diffusers.Transformer2DModel) مدخلات منفصلة (فئات من تضمينات المتجهات) أو مستمرة (تضمينات فعلية).

عندما يكون الإدخال **مستمراً**:

1. قِمْ بإسقاط المدخل وإعادة تشكيله إلى `(batch_size, sequence_length, feature_dimension)`.
2. طبّق كتل Transformer بالطريقة القياسية.
3. إعادة تشكيل إلى صورة.

عندما يكون الإدخال **منفصلاً**:

> [!TIP]
> يُفترض أن أحد فئات الإدخال هو البكسل الكامن المقنّع. لا تحتوي الفئات المتنبأ بها للصورة غير الملوّثة على تنبؤ للبكسل المقنّع، لأن الصورة غير الملوّثة لا يمكن تقنيعها.

1. تحويل المدخلات (فئات البكسلات الكامنة) إلى تمثيلات وتطبيق تمثيلات موضعية.
2. طبّق كتل Transformer بالطريقة القياسية.
3. توقّع فئات الصورة غير المُضجّبة.

## Transformer2DModel[[diffusers.Transformer2DModel]]

#### diffusers.Transformer2DModel[[diffusers.Transformer2DModel]]

```python
diffusers.Transformer2DModel(num_attention_heads: int = 16, attention_head_dim: int = 88, in_channels: int | None = None, out_channels: int | None = None, num_layers: int = 1, dropout: float = 0.0, norm_num_groups: int = 32, cross_attention_dim: int | None = None, attention_bias: bool = False, sample_size: int | None = None, num_vector_embeds: int | None = None, patch_size: int | None = None, activation_fn: str = 'geglu', num_embeds_ada_norm: int | None = None, use_linear_projection: bool = False, only_cross_attention: bool = False, double_self_attention: bool = False, upcast_attention: bool = False, norm_type: str = 'layer_norm', norm_elementwise_affine: bool = True, norm_eps: float = 1e-05, attention_type: str = 'default', caption_channels: int = None, interpolation_scale: float = None, use_additional_conditions: bool | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_2d.py#L39)

**المعاملات:**

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية 16) : عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس.

attention_head_dim (`int`، *اختياري*، القيمة الافتراضية 88) : عدد القنوات في كل رأس.

in_channels (`int`، *اختياري*) : عدد القنوات في المدخلات والمخرجات (حدد إذا كانت المدخلات **مستمرة**).

num_layers (`int`، *اختياري*، القيمة الافتراضية 1) : عدد طبقات كتل Transformer التي سيتم استخدامها.

dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : احتمال الإسقاط (dropout) المستخدم.

cross_attention_dim (`int`، *اختياري*) : عدد أبعاد `encoder_hidden_states` التي سيتم استخدامها.

sample_size (`int`, *اختياري*) : عرض الصور الكامنة (يُحدد إذا كان الإدخال **منفصلاً**). هذا ثابت أثناء التدريب لأنه يُستخدم لتعلم عدد من تضمينات المواقع.

num_vector_embeds (`int`, *اختياري*) : عدد فئات التضمينات المتجهية للبيكسلات الكامنة (يُحدد إذا كان الإدخال **منفصلاً**). يتضمن فئة البيكسل الكامن المقنّع.

activation_fn (`str`، *اختياري*، القيمة الافتراضية `"geglu"`) : دالة التنشيط المستخدمة في الشبكة العصبية الأمامية.

num_embeds_ada_norm ( `int`, *اختياري*) : عدد خطوات الانتشار المستخدمة أثناء التدريب. مرّرها إذا كان على الأقل أحد طبقات norm_layers هو `AdaLayerNorm`. هذا العدد ثابت أثناء التدريب لأنه يُستخدم لتعلم عدد من التضمينات التي تُضاف إلى الحالات المخفية. أثناء الاستدلال، يمكنك إزالة الضوضاء لعدد خطوات لا يتجاوز `num_embeds_ada_norm`.

attention_bias (`bool`، *اختياري*) : يحدد ما إذا كان يجب أن يحتوي انتباه `TransformerBlocks` على معامل انحياز.

نموذج Transformer ثنائي الأبعاد للبيانات المشابهة للصور.

#### forward[[diffusers.Transformer2DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: typing.Optional[torch.Tensor] = None, timestep: typing.Optional[torch.LongTensor] = None, added_cond_kwargs: dict[str, torch.Tensor] = None, class_labels: typing.Optional[torch.LongTensor] = None, cross_attention_kwargs: dict[str, typing.Any] = None, attention_mask: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_2d.py#L324)

**المعاملات:**

hidden_states (`torch.LongTensor` من الشكل `(batch size, num latent pixels)` إذا كانت منفصلة، `torch.Tensor` من الشكل `(batch size, channel, height, width)` إذا كانت مستمرة) : مدخلات `hidden_states`.

encoder_hidden_states ( `torch.Tensor` من الشكل `(batch size, sequence len, embed dims)`, *اختياري*) : تمثيلات شرطية لطبقة الانتباه المتقاطع. إذا لم تُقدَّم، فإن الانتباه المتقاطع يتحول افتراضيًا إلى الانتباه الذاتي.

timestep ( `torch.LongTensor`, *اختياري*) : يُستخدم للإشارة إلى خطوة إزالة الضوضاء. خطوة زمنية اختيارية تُطبَّق كتضمين في `AdaLayerNorm`.

class_labels ( `torch.LongTensor` من الشكل `(batch size, num classes)`, *اختياري*) : يُستخدم للإشارة إلى تكييف تسميات الفئات. تسميات فئات اختيارية تُطبَّق كتضمين في `AdaLayerZeroNorm`.

cross_attention_kwargs ( `dict[str, Any]`, *اختياري*) : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرَّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

attention_mask ( `torch.Tensor`, *اختياري*) : يُطبَّق قناع انتباه على `encoder_hidden_states` بشكل `(batch, key_tokens)`. إذا كان `1` يُحافظ على القناع، وإلا إذا كان `0` يُستبعد. سيُحوَّل القناع إلى انحياز، يضيف قيمًا سالبة كبيرة إلى درجات الانتباه المقابلة لرموز "الاستبعاد".

encoder_attention_mask ( `torch.Tensor`, *اختياري*) : قناع الانتباه المتقاطع المطبّق على `encoder_hidden_states`. يتم دعم صيغتين:  * قناع `(batch, sequence_length)` حيث True = الإبقاء، False = التخلّي. * انحياز `(batch, 1, sequence_length)` حيث 0 = الإبقاء، -10000 = التخلّي.  إذا كان `ndim == 2`: سيتم تفسيره كقناع، ثم تحويله إلى انحياز متوافق مع الصيغة المذكورة أعلاه. سيُضاف هذا الانحياز إلى درجات الانتباه المتقاطع.

return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [UNet2DConditionOutput](/docs/diffusers/v0.43.0/ar/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.UNet2DConditionOutput) بدلاً من tuple عادي.

**يعيد:**

إذا كان `return_dict` صحيحًا، يُعاد `Transformer2DModelOutput`، وإلا يُعاد `tuple` يكون عنصره الأول هو متجه العينة.

طريقة [Transformer2DModel](/docs/diffusers/v0.43.0/ar/api/models/transformer2d#diffusers.Transformer2DModel) الأمامية.

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/modeling_outputs.py#L21)

**المعاملات:**

sample (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)` أو `(batch size, num_vector_embeds - 1, num_latent_pixels)` إذا كان [Transformer2DModel](/docs/diffusers/v0.43.0/ar/api/models/transformer2d#diffusers.Transformer2DModel) منفصلاً): مخرجات الحالات المخفية المشروطة على مدخل `encoder_hidden_states`. إذا كان منفصلاً، يعيد توزيعات الاحتمال للبكسلات الكامنة غير الملوثة.

مخرجات [Transformer2DModel](/docs/diffusers/v0.43.0/ar/api/models/transformer2d#diffusers.Transformer2DModel).

