# LXMERT

## نظرة عامة

قُدم نموذج LXMERT في [LXMERT: Learning Cross-Modality Encoder Representations from Transformers](https://huggingface.co/papers/1908.07490) بواسطة Hao Tan & Mohit Bansal. وهو عبارة عن سلسلة من مشفّرات transformer ثنائية الاتجاه (واحد لكل من نمط الرؤية ونمط اللغة، ثم واحد لدمج النمطين معًا) تم تدريبه مسبقًا باستخدام مجموعة من أهداف: نمذجة اللغة المقنّعة، ومحاذاة النص بين الرؤية واللغة، والانحدار لميزات ROI، ونمذجة السمات البصرية المقنّعة، ونمذجة الكائنات البصرية المقنّعة، وأهداف الإجابة على الأسئلة البصرية. ويتضمن التدريب المسبق عدة مجموعات بيانات متعددة الوسائط: MSCOCO، وVisual-Genome + Visual-Genome Question Answering، وVQA 2.0، وGQA.

المستخلص من الورقة البحثية هو كالتالي:

*يتطلب الاستدلال البصري-اللغوي فهماً للمفاهيم البصرية والدلالات اللغوية، والأهم من ذلك، المحاذاة والعلاقات بين هذين النمطين. لذلك نقترح إطار LXMERT (Learning Cross-Modality Encoder Representations from Transformers) لتعلم هذه الروابط البصرية-اللغوية. في LXMERT، نبني نموذج Transformer واسع النطاق يتكون من ثلاثة مشفّرات: مشفّر لعلاقات الكائنات، ومشفّر لغوي، ومشفّر بيني. ثم، لمنح نموذجنا القدرة على ربط الدلالات البصرية واللغوية، ندرّب النموذج مسبقاً باستخدام كميات كبيرة من أزواج الصور والجمل، عبر خمس مهام تمثيلية متنوعة للدراسة المسبقة: نمذجة اللغة المقنّعة، التنبؤ بالكائنات المقنّعة (انحدار الميزات وتصنيف التسميات)، المطابقة بينية، والإجابة على أسئلة الصور. تساعد هذه المهام في تعلم العلاقات داخلية النمط وبينية النمط على حد سواء. بعد الضبط الدقيق انطلاقاً من معاملاتنا المدربة مسبقاً، يحقق نموذجنا نتائج متقدمة على مستوى الفن في مجموعتي بيانات الإجابة على أسئلة الصور (أي VQA و GQA). كما نوضح قابلية تعميم نموذجنا البيني المدرب مسبقاً من خلال تكييفه مع مهمة استدلال بصري صعبة، وهي NLVR، ونحسّن أفضل نتيجة سابقة بنسبة 22% مطلقة (من 54% إلى 76%). أخيراً، نعرض دراسات تفكيك تفصيلية لإثبات أن كلا من مكوّنات نموذجنا الجديدة واستراتيجيات التدريب المسبق تساهم بشكل كبير في نتائجنا القوية؛ كما نقدم عدة تصورات انتباه للمشفرات المختلفة*

تمت مساهمة هذا النموذج من قِبل [eltoto1219](https://huggingface.co/eltoto1219). يمكن العثور على الكود الأصلي [هنا](https://github.com/airsplay/lxmert).

## نصائح للاستخدام

- لا يُشترط استخدام صناديق الحدود في ميزات التضمين البصرية، بل تعمل أي ميزات بصرية مكانية.
- تُمرَّر كلٌّ من حالات اللغة المخفية وحالات الرؤية المخفية التي تُخرجها LXMERT عبر طبقة التفاعل بين الوسائط، لذا فهي تحتوي على معلومات من الوسطين معًا. للوصول إلى وسط يركز على نفسه فقط، اختر حالات الرؤية/اللغة المخفية من المدخل الأول في المجموعة المرتبة.
- لا تُرجع انتباه مُشفّر التفاعل بين الوسائط ثنائي الاتجاه قيم الانتباه إلا عندما تُستخدم وسيلة اللغة كمدخل وتُستخدم وسيلة الرؤية كمتجه السياق. وعلاوة على ذلك، على الرغم من أن مُشفّر التفاعل بين الوسائط يحتوي على انتباه ذاتي لكل وسيلة على حدة بالإضافة إلى الانتباه المتقاطع، فإن الانتباه المتقاطع فقط هو الذي يُرجع، بينما تُهمل مخرجات الانتباه الذاتي لكلا الوسيلتين.

## الموارد

- [دليل مهمة الإجابة عن الأسئلة](../tasks/question_answering)

## LxmertConfig[[transformers.LxmertConfig]]

#### transformers.LxmertConfig[[transformers.LxmertConfig]]

```python
transformers.LxmertConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 30522, hidden_size: int = 768, num_attention_heads: int = 12, num_qa_labels: int = 9500, num_object_labels: int = 1600, num_attr_labels: int = 400, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.1, attention_probs_dropout_prob: float | int = 0.1, max_position_embeddings: int = 512, type_vocab_size: int = 2, initializer_range: float = 0.02, l_layers: int = 9, x_layers: int = 5, r_layers: int = 5, visual_feat_dim: int = 2048, visual_pos_dim: int = 4, visual_loss_normalizer: float = 6.67, task_matched: bool = True, task_mask_lm: bool = True, task_obj_predict: bool = True, task_qa: bool = True, visual_obj_loss: bool = True, visual_attr_loss: bool = True, visual_feat_loss: bool = True, pad_token_id: int | None = None, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, tie_word_embeddings: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/configuration_lxmert.py#L24)

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

vocab_size (`int`، *اختياري*، القيمة الافتراضية `30522`) : حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة `input_ids`.

hidden_size (`int`، *اختياري*، القيمة الافتراضية `768`) : بُعد التمثيلات المخفية.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

num_qa_labels (`int`، *اختياري*، القيمة الافتراضية 9500) : يمثل هذا العدد الإجمالي لملصقات الإجابة على الأسئلة (QA) المختلفة. عند استخدام أكثر من مجموعة بيانات تتضمن أسئلة وإجابات، يجب على المستخدم مراعاة العدد الإجمالي للملصقات الموجودة في جميع مجموعات البيانات مجتمعة.

num_object_labels (`int`، *اختياري*، القيمة الافتراضية 1600) : يمثل هذا العدد الإجمالي للكائنات الفريدة دلاليًا التي يمكن لـ lxmert تصنيف ميزة الكائن المجمَّعة على أنها تنتمي إليها.

num_attr_labels (`int`، *اختياري*، القيمة الافتراضية 400) : يمثل هذا العدد الإجمالي للسمات الفريدة دلاليًا التي يمكن لـ lxmert تصنيف ميزة الكائن المجمّع على أنها تمتلكها.

intermediate_size (`int`، *اختياري*، القيمة الافتراضية `3072`) : بُعد تمثيلات MLP.

hidden_act (`str`، *اختياري*، القيمة الافتراضية `gelu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

hidden_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمُشفِّر (encoder) والمُجمِّع (pooler).

attention_probs_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

max_position_embeddings (`int`، *اختياري*، القيمة الافتراضية `512`) : أقصى طول تسلسل قد يُستخدم مع هذا النموذج.

type_vocab_size (`int`، *اختياري*، القيمة الافتراضية `2`) : حجم مفردات `token_type_ids`.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

l_layers (`int`، *اختياري*، القيمة الافتراضية 9) : عدد الطبقات المخفية في مُشفِّر اللغة Transformer.

x_layers (`int`، *اختياري*، القيمة الافتراضية 5) : عدد طبقات الخفاء في مُشفِّر التفاعل بين الوسائط في Transformer.

r_layers (`int`، *اختياري*، القيمة الافتراضية 5) : عدد الطبقات المخفية في مُشفِّر الصور في Transformer.

visual_feat_dim (`int`، *اختياري*، القيمة الافتراضية 2048) : يمثل هذا البُعد الأخير لميزات الكائنات المجمّعة المستخدمة كمدخلات للنموذج، ويعبر عن حجم ميزات كل كائن بحد ذاته.

visual_pos_dim (`int`، *اختياري*، القيمة الافتراضية 4) : يمثل هذا عدد الميزات المكانية التي تُدمج في الميزات البصرية. يتم تعيين القيمة الافتراضية إلى 4 لأن هذا يمثل في الغالب موقع صندوق الإحاطة، أي (x, y, width, height)

visual_loss_normalizer (`float`، *اختياري*، القيمة الافتراضية 6.67) : يمثل هذا معامل التوسيع الذي يُضرب به كل خسارة بصرية إذا قررت أثناء التدريب المسبق تدريب النموذج باستخدام أهداف خسارة متعددة تعتمد على الرؤية.

task_matched (`bool`، *اختياري*، القيمة الافتراضية `True`) : تُستخدم هذه المهمة لمطابقة الجملة مع الصورة. إذا كانت الجملة تصف الصورة بشكل صحيح، فسيكون التسمية 1. أما إذا لم تكن الجملة تصف الصورة بشكل صحيح، فسيكون التسمية 0.

task_mask_lm (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة نمذجة اللغة المقنّعة (كما تُستخدم في نماذج ما قبل التدريب مثل BERT) إلى هدف الدالة الخاسرة.

task_obj_predict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة التنبؤ بالكائنات والتنبؤ بالسمات واسترجاع الميزات إلى هدف الدالة الخاسرة أم لا.

task_qa (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة خسارة الإجابة عن الأسئلة إلى الدالة الهدف

visual_obj_loss (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم حساب هدف خسارة التنبؤ بالكائن أم لا

visual_attr_loss (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم حساب هدف خسارة التنبؤ بالسمات أم لا

visual_feat_loss (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم حساب هدف خسارة الانحدار المميز

pad_token_id (`int`, *اختياري*) : معرّف الرمز (Token id) المستخدم للتعبئة (padding) في المفردات.

bos_token_id (`int`, *اختياري*) : معرّف الرمز المستخدم لبدء البث في المفردات.

eos_token_id (`Union[int, list[int]]`، *اختياري*) : معرّف الرمز المستخدم لنهاية البث في المفردات.

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج LxmertModel. تُستخدم لتوليد نموذج Lxmert وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [unc-nlp/lxmert-base-uncased](https://huggingface.co/unc-nlp/lxmert-base-uncased)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

## LxmertTokenizer[[transformers.BertTokenizer]]

#### transformers.BertTokenizer[[transformers.BertTokenizer]]

```python
transformers.BertTokenizer(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bert/tokenization_bert.py#L41)

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

vocab (`str` أو `dict[str, int]`، *اختياري*) : قاموس مفردات مخصص. إذا لم يُقدَّم، يتم تحميل المفردات من `vocab_file`.

do_lower_case (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تحويل المدخلات إلى أحرف صغيرة عند تقسيم النص إلى رموز.

unk_token (`str`، *اختياري*، القيمة الافتراضية `"[UNK]"`) : رمز المجهول. الرمز غير الموجود في المفردات لا يمكن تحويله إلى معرّف، فيُستبدل بهذا الرمز.

sep_token (`str`، *اختياري*، القيمة الافتراضية `"[SEP]"`) : رمز الفاصل، الذي يُستخدم عند بناء تسلسل من عدة تسلسلات، على سبيل المثال تسلسلان لتصنيف التسلسل، أو نص وسؤال للإجابة على الأسئلة. كما يُستخدم كآخر رمز في تسلسل مبني باستخدام الرموز الخاصة.

pad_token (`str`، *اختياري*، الافتراضي هو `"[PAD]"`) : الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة.

cls_token (`str`، *اختياري*، القيمة الافتراضية `"[CLS]"`) : رمز التصنيف الذي يُستخدم عند إجراء تصنيف التسلسل (تصنيف التسلسل بأكمله بدلاً من التصنيف لكل رمز على حدة). وهو الرمز الأول في التسلسل عند بناؤه باستخدام الرموز الخاصة.

mask_token (`str`، *اختياري*، القيمة الافتراضية `"[MASK]"`) : الرمز المستخدم لإخفاء القيم. هذا هو الرمز المستخدم عند تدريب هذا النموذج باستخدام نمذجة اللغة المقنّعة. وهو الرمز الذي سيحاول النموذج التنبؤ به.

tokenize_chinese_chars (`bool`, *اختياري*, القيمة الافتراضية `True`) : ما إذا كان سيتم تجزئة الأحرف الصينية إلى رموز.

strip_accents (`bool`، *اختياري*) : ما إذا كان يجب إزالة جميع العلامات الصوتية. إذا لم يُحدَّد هذا الخيار، فسيتم تحديده بناءً على قيمة `lowercase` (كما في BERT الأصلي).

إنشاء مُجزِّئ BERT (المعتمد على مكتبة tokenizers من HuggingFace). مبني على WordPiece.

يرث هذا المُجزِّئ من [TokenizersBackend](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend) التي تحتوي على معظم الدوال الرئيسية. ينبغي على المستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الدوال.

## المخرجات الخاصة بـ Lxmert[[transformers.models.lxmert.modeling_lxmert.LxmertModelOutput]]

#### transformers.models.lxmert.modeling_lxmert.LxmertModelOutput[[transformers.models.lxmert.modeling_lxmert.LxmertModelOutput]]

```python
transformers.models.lxmert.modeling_lxmert.LxmertModelOutput(language_output: typing.Optional[torch.Tensor] = None, vision_output: typing.Optional[torch.Tensor] = None, pooled_output: typing.Optional[torch.Tensor] = None, language_hidden_states: tuple[torch.Tensor] | None = None, vision_hidden_states: tuple[torch.Tensor] | None = None, language_attentions: tuple[torch.Tensor] | None = None, vision_attentions: tuple[torch.Tensor] | None = None, cross_encoder_attentions: tuple[torch.Tensor] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L49)

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

language_output (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) : تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من مُشفِّر اللغة.

vision_output (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) : تسلسل من حالات المخفية عند مخرج الطبقة الأخيرة من المشفر البصري.

pooled_output (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) : حالة الطبقة المخفية الأخيرة للرمز الأول من التسلسل (رمز التصنيف، CLS، الرمز) بعد معالجتها بواسطة طبقة خطية ودالة تفعيل Tanh. الطبقة

language_hidden_states (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.

vision_hidden_states (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.

language_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

vision_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

cross_encoder_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

المخرجات الخاصة بـ Lxmert التي تتضمن الحالات المخفية الأخيرة، والمخرجات المجمعة، واحتمالات الانتباه لمشفّرات اللغة، والبصرية، والتقاطعية بين الوسائط. (ملاحظة: يُشار إلى المشفّر البصري في Lxmert باسم مشفّر "العلاقات")

#### transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput[[transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput]]

```python
transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput(loss: typing.Optional[torch.Tensor] = None, prediction_logits: typing.Optional[torch.Tensor] = None, cross_relationship_score: typing.Optional[torch.Tensor] = None, question_answering_score: typing.Optional[torch.Tensor] = None, language_hidden_states: tuple[torch.Tensor] | None = None, vision_hidden_states: tuple[torch.Tensor] | None = None, language_attentions: tuple[torch.Tensor] | None = None, vision_attentions: tuple[torch.Tensor] | None = None, cross_encoder_attentions: tuple[torch.Tensor] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L136)

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

loss (`*optional*`، يُعاد عند تقديم `labels`، `torch.Tensor` من الشكل `(1,)`) : إجمالي الخسارة كمجموع خسارة نمذجة اللغة المقنّعة وخسارة التنبؤ بالتسلسل التالي (التصنيف).

prediction_logits (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) : درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).

cross_relationship_score (`torch.Tensor` من الشكل `(batch_size, 2)`) : درجات التنبؤ لرأس الهدف المطابق النصي (التصنيف) (درجات الاستمرار صحيح/خطأ قبل SoftMax).

question_answering_score (`torch.Tensor` من الشكل `(batch_size, n_qa_answers)`) : درجات التنبؤ لهدف الإجابة على الأسئلة (تصنيف).

language_hidden_states (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.

vision_hidden_states (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.

language_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

vision_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

cross_encoder_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

نوع المخرجات لـ [LxmertForPreTraining](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertForPreTraining).

#### transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput[[transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput]]

```python
transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput(loss: typing.Optional[torch.Tensor] = None, question_answering_score: typing.Optional[torch.Tensor] = None, language_hidden_states: tuple[torch.Tensor] | None = None, vision_hidden_states: tuple[torch.Tensor] | None = None, language_attentions: tuple[torch.Tensor] | None = None, vision_attentions: tuple[torch.Tensor] | None = None, cross_encoder_attentions: tuple[torch.Tensor] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L94)

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

loss (`*optional*`, returned when `labels` is provided, `torch.Tensor` of shape `(1,)`) : Total loss as the sum of the masked language modeling loss and the next sequence prediction (classification) loss.k.

question_answering_score (`torch.Tensor` من الشكل `(batch_size, n_qa_answers)`، *اختياري*) : درجات التنبؤ لهدف الإجابة على الأسئلة (التصنيف).

language_hidden_states (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.

vision_hidden_states (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.

language_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

vision_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

cross_encoder_attentions (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

نوع المخرجات الخاص بـ [LxmertForQuestionAnswering](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertForQuestionAnswering).

## LxmertModel[[transformers.LxmertModel]]

#### transformers.LxmertModel[[transformers.LxmertModel]]

```python
transformers.LxmertModel(config: LxmertConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L675)

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

config ([LxmertConfig](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Lxmert الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LxmertModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, visual_feats: typing.Optional[torch.Tensor] = None, visual_pos: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, visual_attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L690)

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

visual_feats (`torch.Tensor` من الشكل `(batch_size, num_visual_features, visual_feat_dim)`) : يمثل هذا المدخل ميزات بصرية. وهي ميزات كائنات مجمعة عبر مناطق الاهتمام (ROI) من صناديق الحدود باستخدام نموذج faster-RCNN) هذه الميزات غير متوفرة حاليًا في مكتبة transformers.

visual_pos (`torch.Tensor` من الشكل `(batch_size, num_visual_features, visual_pos_dim)`) : يمثل هذا المدخل الميزات المكانية المقابلة لميزات البصر النسبية (عبر الفهرس). يتوقع نموذج LXMERT المُدرَّب مسبقًا أن تكون هذه الميزات المكانية صناديق حدود مُطبَّعة على مقياس من 0 إلى 1. حاليًا، لا توفر مكتبة transformers هذه الميزات.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

visual_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [LxmertModelOutput](/docs/transformers/main/ar/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertModelOutput) أو `tuple(torch.Tensor)`

[LxmertModelOutput](/docs/transformers/main/ar/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertModelOutput) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([LxmertConfig](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertConfig)) والمدخلات.

تُعيد طريقة [LxmertModel](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertModel) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **language_output** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات المخفية عند مخرج الطبقة الأخيرة من مشفّر اللغة.
- **vision_output** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من المُشفِّر البصري.
- **pooled_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف، CLS، رمز) بعد معالجته بواسطة طبقة خطية ودالة تفعيل Tanh. الطبقة
- **language_hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.
- **vision_hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.
- **language_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.
- **vision_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.
- **cross_encoder_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد دالة softmax للانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

## LxmertForPreTraining[[transformers.LxmertForPreTraining]]

#### transformers.LxmertForPreTraining[[transformers.LxmertForPreTraining]]

```python
transformers.LxmertForPreTraining(config: LxmertConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L826)

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

config ([LxmertConfig](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Lxmert مع رأس تدريب مسبق محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LxmertForPreTraining.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, visual_feats: typing.Optional[torch.Tensor] = None, visual_pos: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, visual_attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, obj_labels: dict[str, tuple[torch.Tensor, torch.Tensor]] | None = None, matched_label: typing.Optional[torch.LongTensor] = None, ans: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L976)

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

visual_feats (`torch.Tensor` من الشكل `(batch_size, num_visual_features, visual_feat_dim)`) : يمثل هذا المدخل ميزات بصرية. وهي ميزات كائنات مجمعة عبر مناطق الاهتمام (ROI) من صناديق الحدود باستخدام نموذج faster-RCNN) هذه الميزات غير متوفرة حاليًا في مكتبة transformers.

visual_pos (`torch.Tensor` من الشكل `(batch_size, num_visual_features, visual_pos_dim)`) : يمثل هذا المدخل الميزات المكانية المقابلة لميزات البصر النسبية (عبر الفهرس). يتوقع نموذج LXMERT المُدرَّب مسبقًا أن تكون هذه الميزات المكانية صناديق حدود مُطبَّعة على مقياس من 0 إلى 1. حاليًا، لا توفر مكتبة transformers هذه الميزات.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

visual_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن `[-100, 0, ..., config.vocab_size]` (انظر `input_ids` docstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على `-100` (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن `[0, ..., config.vocab_size]`

obj_labels (`dict[Str : tuple[torch.Tensor, torch.Tensor]]`، *اختياري*): كل مفتاح يُسمّى على اسم أحد الخسائر البصرية، وكل عنصر من عناصر المجموعة المرتبة (tuple) يكون على الشكل `(batch_size, num_features)` و`(batch_size, num_features, visual_feature_dim)` لكلٍّ من معرّف التسمية (label id) ودرجة التسمية (label score) على التوالي

matched_label (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة التصنيف التي تحدد ما إذا كانت مدخلات النص تطابق الصورة أم لا. يجب أن يكون المدخل زوجًا من التسلسلات (انظر `input_ids` docstring). يجب أن تكون الفهارس ضمن `[0, 1]`: - 0 يشير إلى أن الجملة لا تطابق الصورة، - 1 يشير إلى أن الجملة تطابق الصورة.

ans (`Torch.Tensor` من الشكل `(batch_size)`، *اختياري*) : تمثيل أحادي (one hot) للإجابة الصحيحة *اختياري*

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [LxmertForPreTrainingOutput](/docs/transformers/main/ar/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput) أو `tuple(torch.Tensor)`

[LxmertForPreTrainingOutput](/docs/transformers/main/ar/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForPreTrainingOutput) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([LxmertConfig](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertConfig)) والمدخلات.

تتجاوز طريقة [LxmertForPreTraining](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertForPreTraining) الخاصة بالتقديم الأمامي الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`*optional*`، يُعاد عند تقديم `labels`، `torch.Tensor` من الشكل `(1,)`) -- إجمالي الخسارة كمجموع خسارة نمذجة اللغة المقنّعة وخسارة التنبؤ بالتسلسل التالي (التصنيف).
- **prediction_logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **cross_relationship_score** (`torch.Tensor` من الشكل `(batch_size, 2)`) -- درجات التنبؤ لرأس الهدف المطابق النصي (التصنيف) (درجات الاستمرار صحيح/خطأ قبل SoftMax).
- **question_answering_score** (`torch.Tensor` من الشكل `(batch_size, n_qa_answers)`) -- درجات التنبؤ لهدف الإجابة على الأسئلة (التصنيف).
- **language_hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.
- **vision_hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.
- **language_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.
- **vision_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.
- **cross_encoder_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد دالة softmax للانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

مثال:

```python
```

## LxmertForQuestionAnswering[[transformers.LxmertForQuestionAnswering]]

#### transformers.LxmertForQuestionAnswering[[transformers.LxmertForQuestionAnswering]]

```python
transformers.LxmertForQuestionAnswering(config: LxmertConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L1123)

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

config ([LxmertConfig](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Lxmert مع رأس للإجابة البصرية في الأعلى لمهام الإجابة عن الأسئلة

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LxmertForQuestionAnswering.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, visual_feats: typing.Optional[torch.Tensor] = None, visual_pos: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, visual_attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lxmert/modeling_lxmert.py#L1215)

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

visual_feats (`torch.Tensor` من الشكل `(batch_size, num_visual_features, visual_feat_dim)`) : يمثل هذا المدخل ميزات بصرية. وهي ميزات كائنات مجمعة عبر مناطق الاهتمام (ROI) من صناديق الحدود باستخدام نموذج faster-RCNN) هذه الميزات غير متوفرة حاليًا في مكتبة transformers.

visual_pos (`torch.Tensor` من الشكل `(batch_size, num_visual_features, visual_pos_dim)`) : يمثل هذا المدخل الميزات المكانية المقابلة لميزات البصر النسبية (عبر الفهرس). يتوقع نموذج LXMERT المُدرَّب مسبقًا أن تكون هذه الميزات المكانية صناديق حدود مُطبَّعة على مقياس من 0 إلى 1. حاليًا، لا توفر مكتبة transformers هذه الميزات.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

visual_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`Torch.Tensor` من الشكل `(batch_size)`، *اختياري*) : تمثيل أحادي (one-hot) للإجابة الصحيحة

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [LxmertForQuestionAnsweringOutput](/docs/transformers/main/ar/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput) أو `tuple(torch.Tensor)`

[LxmertForQuestionAnsweringOutput](/docs/transformers/main/ar/model_doc/lxmert#transformers.models.lxmert.modeling_lxmert.LxmertForQuestionAnsweringOutput) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([LxmertConfig](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertConfig)) والمدخلات.

تتجاوز طريقة [LxmertForQuestionAnswering](/docs/transformers/main/ar/model_doc/lxmert#transformers.LxmertForQuestionAnswering) الخاصة بالتقديم الأمامي (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`*optional*`, returned when `labels` is provided, `torch.Tensor` of shape `(1,)`) -- Total loss as the sum of the masked language modeling loss and the next sequence prediction (classification) loss.k.
- **question_answering_score** (`torch.Tensor` من الشكل `(batch_size, n_qa_answers)`، *اختياري*) -- درجات التنبؤ لهدف الإجابة على الأسئلة (التصنيف).
- **language_hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.
- **vision_hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لميزات الإدخال + واحدة لإخراج كل طبقة بين الوسائط) بأبعاد `(batch_size, sequence_length, hidden_size)`.
- **language_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.
- **vision_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.
- **cross_encoder_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد دالة softmax للانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

مثال:

```python
>>> from transformers import AutoTokenizer, LxmertForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("unc-nlp/lxmert-base-uncased")
>>> model = LxmertForQuestionAnswering.from_pretrained("unc-nlp/lxmert-base-uncased")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...

>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...
```

