# PriorTransformer

تم تقديم Prior Transformer في الأصل في [Hierarchical Text-Conditional Image Generation with CLIP Latents](https://huggingface.co/papers/2204.06125) بواسطة Ramesh وآخرون. يُستخدم للتنبؤ بتضمينات صور CLIP من تضمينات نصوص CLIP؛ حيث يتم التنبؤ بتضمينات الصور عبر عملية انتشار إزالة الضوضاء.

ملخص الورقة البحثية هو:

*تبيّن أن النماذج التباينية مثل CLIP تتعلم تمثيلات قوية للصور تلتقط كلًا من الدلالات والأسلوب. وللاستفادة من هذه التمثيلات في توليد الصور، نقترح نموذجًا من مرحلتين: نموذج مسبق (prior) يولّد تمثيل صورة CLIP بناءً على وصف نصي، ومفكّك (decoder) يولّد صورة مشروطة على تمثيل الصورة. نُظهر أن توليد تمثيلات الصور بشكل صريح يحسّن تنوّع الصور مع خسارة ضئيلة في الواقعية الضوئية ومماثلة الوصف. كما يمكن لمفكّكاتنا المشروطة على تمثيلات الصور أن تنتج متغيرات لصورة تحافظ على دلالاتها وأسلوبها معًا، مع تغيير التفاصيل غير الجوهرية الغائبة عن تمثيل الصورة. علاوة على ذلك، يتيح الفضاء المضمّن المشترك لـ CLIP عمليات تعديل للصور موجّهة باللغة بطريقة صفرية التمثيل (zero-shot). نستخدم نماذج الانتشار (diffusion models) للمفكّك، ونجرّب كلًا من النماذج الذاتية التوليد (autoregressive) ونماذج الانتشار للنموذج المسبق، لنجد أن الأخيرة أكثر كفاءة من حيث الحسابات وتنتج عينات بجودة أعلى.*

## PriorTransformer[[diffusers.PriorTransformer]]

#### diffusers.PriorTransformer[[diffusers.PriorTransformer]]

```python
diffusers.PriorTransformer(num_attention_heads: int = 32, attention_head_dim: int = 64, num_layers: int = 20, embedding_dim: int = 768, num_embeddings = 77, additional_embeddings = 4, dropout: float = 0.0, time_embed_act_fn: str = 'silu', norm_in_type: str | None = None, embedding_proj_norm_type: str | None = None, encoder_hid_proj_type: str | None = 'linear', added_emb_type: str | None = 'prd', time_embed_dim: int | None = None, embedding_proj_dim: int | None = None, clip_embed_dim: int | None = None)
```

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

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

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

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

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

embedding_dim (`int`، *اختياري*، القيمة الافتراضية 768) : بُعد مدخلات النموذج `hidden_states`

num_embeddings (`int`، *اختياري*، القيمة الافتراضية 77) : عدد تمثيلات مدخلات النموذج `hidden_states`

additional_embeddings (`int`، *اختياري*، القيمة الافتراضية 4) : عدد الرموز الإضافية المضافة إلى `hidden_states` المُسقط. الطول الفعلي لـ`hidden_states` المستخدم هو `num_embeddings + additional_embeddings`.

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

time_embed_act_fn (`str`، *اختياري*، الافتراضي 'silu') : دالة التنشيط المستخدمة لإنشاء تضمينات خطوة الزمن.

norm_in_type (`str`، *اختياري*، القيمة الافتراضية هي None) : طبقة التطبيع التي تُطبَّق على الحالات المخفية قبل تمريرها إلى كتل Transformer. اضبطها على `None` إذا لم يكن التطبيع مطلوبًا.

embedding_proj_norm_type (`str`، *اختياري*، القيمة الافتراضية هي None) : طبقة التطبيع التي تُطبَّق على مدخل `proj_embedding`. اضبطها على `None` إذا لم يكن التطبيع مطلوبًا.

encoder_hid_proj_type (`str`، *اختياري*، القيمة الافتراضية `linear`) : طبقة الإسقاط التي تُطبَّق على مدخلات `encoder_hidden_states`. اضبطها على `None` إذا كانت `encoder_hidden_states` تساوي `None`.

added_emb_type (`str`، *اختياري*، القيمة الافتراضية `prd`) : تضمينات إضافية لتكييف النموذج. اختر من بين `prd` أو `None`. إذا اخترت `prd`، فسيتم إضافة رمز في البداية يشير إلى (الكمي) لمنتج النقط بين تضمين النص وتضمين الصورة كما اقترح في ورقة unclip https://huggingface.co/papers/2204.06125 إذا كانت `None`، فلن يتم إضافة أي تضمينات إضافية.

time_embed_dim (`int, *optional*, defaults to None) : The dimension of timestep embeddings. If None, will be set to `num_attention_heads * attention_head_dim`

embedding_proj_dim (`int`، *اختياري*، الافتراضي None) : بُعد `proj_embedding`. إذا كان None، فسيتم تعيينه إلى `embedding_dim`.

clip_embed_dim (`int`، *اختياري*، الافتراضي None) : بُعد المخرجات. إذا كان None، فسيتم تعيينه إلى `embedding_dim`.

نموذج Transformer مسبق.

#### forward[[diffusers.PriorTransformer.forward]]

```python
forward(hidden_states, timestep: typing.Union[torch.Tensor, float, int], proj_embedding: Tensor, encoder_hidden_states: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.BoolTensor] = None, return_dict: bool = True)
```

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

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

hidden_states (`torch.Tensor` من الشكل `(batch_size, embedding_dim)`) : تمثيلات الصور المتوقعة حاليًا.

timestep (`torch.LongTensor`) : خطوة إزالة الضوضاء الحالية.

proj_embedding (`torch.Tensor` من الشكل `(batch_size, embedding_dim)`) : متجه التضمين المُسقط الذي يُشترط عليه عملية إزالة الضوضاء.

encoder_hidden_states (`torch.Tensor` من الشكل `(batch_size, num_embeddings, embedding_dim)`) : حالات مخفية لتضمينات النص التي يُشترط عليها عملية إزالة الضوضاء.

attention_mask (`torch.BoolTensor` من الشكل `(batch_size, num_embeddings)`) : قناع النص لتضمينات النص.

return_dict (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع [PriorTransformerOutput](/docs/diffusers/v0.43.0/ar/api/models/prior_transformer#diffusers.models.transformers.prior_transformer.PriorTransformerOutput) بدلاً من tuple عادي.

**يعيد:** [PriorTransformerOutput](/docs/diffusers/v0.43.0/ar/api/models/prior_transformer#diffusers.models.transformers.prior_transformer.PriorTransformerOutput) أو `tuple`

إذا كانت return_dict تساوي True، يُعاد [PriorTransformerOutput](/docs/diffusers/v0.43.0/ar/api/models/prior_transformer#diffusers.models.transformers.prior_transformer.PriorTransformerOutput)، وإلا يُعاد tuple حيث يكون العنصر الأول هو tensor العينة.

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

#### set_default_attn_processor[[diffusers.PriorTransformer.set_default_attn_processor]]

```python
set_default_attn_processor()
```

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

يعطّل معالجات الانتباه المخصصة ويضبط تطبيق الانتباه الافتراضي.

## PriorTransformerOutput[[diffusers.models.transformers.prior_transformer.PriorTransformerOutput]]

#### diffusers.models.transformers.prior_transformer.PriorTransformerOutput[[diffusers.models.transformers.prior_transformer.PriorTransformerOutput]]

```python
diffusers.models.transformers.prior_transformer.PriorTransformerOutput(predicted_image_embedding: Tensor)
```

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

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

predicted_image_embedding (`torch.Tensor` من الشكل `(batch_size, embedding_dim)`) : تمثيل صورة CLIP المتوقع المشروط على مدخل تمثيل نص CLIP.

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

