# Hiera

## نظرة عامة

قُدمت Hiera في [Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles](https://huggingface.co/papers/2306.00989) من قِبل Chaitanya Ryali وYuan-Ting Hu وDaniel Bolya وChen Wei وHaoqi Fan وPo-Yao Huang وVaibhav Aggarwal وArkabandhu Chowdhury وOmid Poursaeed وJudy Hoffman وJitendra Malik وYanghao Li وChristoph Feichtenhofer

تُقدّم الورقة "Hiera"، وهو Vision Transformer هرمي يبسّط بنية محوّلات الرؤية الهرمية الحديثة من خلال إزالة المكونات غير الضرورية دون المساس بالدقة أو الكفاءة. وعلى عكس المحوّلات التقليدية التي تضيف مكونات معقدة مخصصة للرؤية لتحسين أداء التصنيف المُشرف، تُثبت Hiera أن هذه الإضافات، التي غالباً ما تُسمّى "الميزات الإضافية"، ليست ضرورية لتحقيق دقة عالية. ومن خلال الاعتماد على مهمة تمهيدية بصرية قوية (MAE) للتدريب المسبق، يحافظ Hiera على البساطة ويحقق دقة وسرعة فائقتين في كل من الاستدلال والتدريب عبر مهام مختلفة لتعرف الصور والفيديو. وتُشير هذه المنهجية إلى أن الانحيازات المكانية المطلوبة لمهام الرؤية يمكن تعلّمها بفعالية من خلال التدريب المسبق المناسب، مما يلغي الحاجة إلى تعقيد معماري إضافي.

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

*أضافت محولات الرؤية الهرمية الحديثة عدة مكوّنات مخصصة للرؤية في سعيها لتحسين أداء التصنيف المُشرف. وعلى الرغم من أن هذه المكوّنات تؤدي إلى دقة فعّالة وعدد جذّاب من عمليات FLOP، فإن التعقيد المضاف يجعل هذه المحولات في الواقع أبطأ من نظيراتها الأساسية من نوع ViT. في هذه الورقة، نجادل بأن هذا الحجم الإضافي غير ضروري. فمن خلال التدريب المسبق باستخدام مهمة تمهيدية بصرية قوية (MAE)، يمكننا إزالة جميع الإضافات الزائدة من محول رؤية متعدد المراحل متقدم دون فقدان الدقة. وفي هذه العملية، نُنشئ Hiera، وهو محول رؤية هرمي بسيط للغاية، أكثر دقة من النماذج السابقة مع كونه أسرع بكثير في كل من الاستدلال والتدريب. نقيّم Hiera على مجموعة متنوعة من مهام التعرف على الصور والفيديو. كودنا ونماذجنا متاحة على https://github.com/facebookresearch/hiera.*

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/hiera_overview.png"
alt="drawing" width="600"/>

 بنية Hiera. مأخوذة من الورقة الأصلية.

كان هذا النموذج مساهمة مشتركة من [EduardoPacheco](https://huggingface.co/EduardoPacheco) و [namangarg110](https://huggingface.co/namangarg110). يمكن العثور على الكود الأصلي [هنا] (https://github.com/facebookresearch/hiera).

## الموارد

قائمة بالموارد الرسمية من Hugging Face وموارد المجتمع (المشار إليها بـ 🌎) لمساعدتك على البدء مع Hiera. إذا كنت مهتمًا بتقديم مورد ليُدرج هنا، فلا تتردد في فتح طلب سحب (Pull Request) وسنقوم بمراجعته! يُفضَّل أن يُظهر المورد شيئًا جديدًا بدلاً من تكرار مورد موجود مسبقًا.

- يُؤمَّن دعم [HieraForImageClassification](/docs/transformers/main/ar/model_doc/hiera#transformers.HieraForImageClassification) من خلال هذا [دفتر ملاحظات](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb).
- انظر أيضاً: [دليل مهمة تصنيف الصور](../tasks/image_classification)

## HieraConfig[[transformers.HieraConfig]]

#### transformers.HieraConfig[[transformers.HieraConfig]]

```python
transformers.HieraConfig(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, embed_dim: int = 96, image_size: list[int] | tuple[int, ...] = (224, 224), patch_size: list[int] | tuple[int, ...] = (7, 7), patch_stride: list[int] | tuple[int, ...] = (4, 4), patch_padding: list[int] | tuple[int, ...] = (3, 3), mlp_ratio: float = 4.0, depths: list[int] | tuple[int, ...] = (2, 3, 16, 3), num_heads: list[int] | tuple[int, ...] = (1, 2, 4, 8), embed_dim_multiplier: float | int = 2.0, num_query_pool: int = 3, query_stride: list[int] | tuple[int, ...] = (2, 2), masked_unit_size: list[int] | tuple[int, ...] = (8, 8), masked_unit_attention: list[bool] | tuple[bool, ...] = (True, True, False, False), drop_path_rate: float | int = 0.0, num_channels: int = 3, hidden_act: str = 'gelu', initializer_range: float = 0.02, layer_norm_init: float = 1.0, layer_norm_eps: float = 1e-06, decoder_hidden_size: int | None = None, decoder_depth: int | None = None, decoder_num_heads: int | None = None, normalize_pixel_loss: bool | None = True, mask_ratio: float = 0.6, _out_features: list[str] | None = None, _out_indices: list[int] | None = None)
```

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

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

embed_dim (`int`، *اختياري*، القيمة الافتراضية `96`) : بُعد التضمينات والحالات المخفية.

image_size (`Union[list[int], tuple[int, ...]]`، *اختياري*، القيمة الافتراضية `(224, 224)`) : حجم (دقة) كل صورة.

patch_size (`Union[list[int], tuple[int, ...]]`، *اختياري*، القيمة الافتراضية `(7, 7)`) : حجم (دقة) كل رقعة.

patch_stride (`list(int)`، *اختياري*، القيمة الافتراضية `[4, 4]`) : خطوة الباتش.

patch_padding (`list(int)`، *اختياري*، القيمة الافتراضية `[3, 3]`) : الحشو الخاص بالرقعة.

mlp_ratio (`float`، *اختياري*، القيمة الافتراضية `4.0`) : نسبة بُعد MLP المخفي إلى بُعد التضمين.

depths (`Union[list[int], tuple[int, ...]]`، *اختياري*، القيمة الافتراضية `(2, 3, 16, 3)`) : عمق كل طبقة في Transformer.

num_heads (`list(int)`، *اختياري*، القيمة الافتراضية `[1, 2, 4, 8]`) : عدد رؤوس الانتباه في كل طبقة من طبقات مُشفِّر Transformer.

embed_dim_multiplier (`float`، *اختياري*، القيمة الافتراضية 2.0) : المضاعِف لأبعاد تضمين البقعة (patch embedding) في كل طبقة من طبقات مُشفِّر Transformer.

num_query_pool (`int`، *اختياري*، القيمة الافتراضية 3) : عدد مراحل استعلام المسبح (query pool).

query_stride (`list(int)`، *اختياري*، القيمة الافتراضية `[2, 2]`) : خطوة استعلام المسح (query pool).

masked_unit_size (`list(int)`، *اختياري*، القيمة الافتراضية `[8, 8]`) : حجم الوحدة المقنّعة.

masked_unit_attention (`list(bool)`، *اختياري*، القيمة الافتراضية `[True, True, False, False]`) : ما إذا كان سيتم استخدام الانتباه المقنّع للوحدات في كل طبقة من طبقات مُشفِّر Transformer.

drop_path_rate (`Union[float, int]`, *اختياري*, القيمة الافتراضية هي `0.0`) : معدل إسقاط المسار لدمج البقع.

num_channels (`int`، *اختياري*، القيمة الافتراضية `3`) : عدد قنوات الإدخال.

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

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

layer_norm_init (`float`، *اختياري*، القيمة الافتراضية 1.0) : القيمة الأولية لوزن طبقات تطبيع الطبقة.

layer_norm_eps (`float`, *اختياري*, الافتراضي هو `1e-06`) : قيمة إيبسلون المستخدمة في طبقات تطبيع الطبقة.

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

decoder_depth (`int`, *اختياري*) : عمق المُفكِّك (decoder) للتدريب المسبق باستخدام MAE.

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

normalize_pixel_loss (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم تطبيع خسارة البكسل (pixel loss) بناءً على عدد البكسلات.

mask_ratio (`float`، *اختياري*، القيمة الافتراضية 0.6) : نسبة الرموز المقنّعة في المدخلات.

هذه فئة الإعدادات المخزنة لإعدادات نموذج HieraModel. تُستخدم لاستحداث نموذج Hiera وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [facebook/hiera-base-224](https://huggingface.co/facebook/hiera-base-224)

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

مثال:

```python
>>> from transformers import HieraConfig, HieraModel

>>> # Initializing a Hiera hiera-base-patch16-224 style configuration
>>> configuration = HieraConfig()

>>> # Initializing a model (with random weights) from the hiera-base-patch16-224 style configuration
>>> model = HieraModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## HieraModel[[transformers.HieraModel]]

#### transformers.HieraModel[[transformers.HieraModel]]

```python
transformers.HieraModel(config: HieraConfig, add_pooling_layer: bool = True, is_mae: bool = False)
```

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

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

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

add_pooling_layer (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم تطبيق طبقة التجميع أم لا.

is_mae (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم تشغيل النموذج في وضع MAE أم لا.

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

يرث هذا النموذج من [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.HieraModel.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, interpolate_pos_encoding: bool | None = None, return_dict: bool | None = None, **kwargs)
```

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

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

pixel_values (`torch.Tensor` بشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [BitImageProcessor](/docs/transformers/main/ar/model_doc/bit#transformers.BitImageProcessor). راجع [BitImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [BitImageProcessor](/docs/transformers/main/ar/model_doc/bit#transformers.BitImageProcessor) لمعالجة الصور).

noise (`torch.Tensor` من الشكل `(batch_size, num_mask_units)`، *اختياري*) : يُستخدم بشكل رئيسي لأغراض الاختبار للتحكم في العشوائية والحفاظ على قابلية إعادة الإنتاج

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

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

interpolate_pos_encoding (`bool`, *اختياري*) : ما إذا كان سيتم استيفاء ترميزات المواقع المُدرَّبة مسبقًا.

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

**يعيد:** [BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو `tuple(torch.Tensor)`

[BaseModelOutputWithPooling](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([HieraConfig](/docs/transformers/main/ar/model_doc/hiera#transformers.HieraConfig)) والمدخلات.

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

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```python
```

## HieraForPreTraining[[transformers.HieraForPreTraining]]

#### transformers.HieraForPreTraining[[transformers.HieraForPreTraining]]

```python
transformers.HieraForPreTraining(config: HieraConfig)
```

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

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

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

نموذج Hiera transformer مع المُفكِّك (decoder) في الأعلى للتدريب المسبق غير المُراقَب ذاتياً.

يرث هذا النموذج من [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.HieraForPreTraining.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, interpolate_pos_encoding: bool | None = None, return_dict: bool | None = None, **kwargs)
```

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

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

pixel_values (`torch.Tensor` بشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [BitImageProcessor](/docs/transformers/main/ar/model_doc/bit#transformers.BitImageProcessor). راجع [BitImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [BitImageProcessor](/docs/transformers/main/ar/model_doc/bit#transformers.BitImageProcessor) لمعالجة الصور).

noise (`torch.Tensor` من الشكل `(batch_size, num_mask_units)`، *اختياري*) : يُستخدم بشكل رئيسي لأغراض الاختبار للتحكم في العشوائية والحفاظ على قابلية إعادة الإنتاج

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

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

interpolate_pos_encoding (`bool`, *اختياري*) : ما إذا كان سيتم استيفاء ترميزات المواقع المُدرَّبة مسبقًا.

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

**يعيد:** `HieraForPreTrainingOutput` أو `tuple(torch.Tensor)`

A `HieraForPreTrainingOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([HieraConfig](/docs/transformers/main/ar/model_doc/hiera#transformers.HieraConfig)) and inputs.

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`) -- خسارة إعادة بناء البكسل.
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, patch_size ** 2 * num_channels)`) -- قيم logits لإعادة بناء البكسلات.
- **bool_masked_pos** (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)`) -- متجه يُظهر أي البقع مقنّعة (0) وأيها غير مقنّعة (1).
- **ids_restore** (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`) -- متجه يحتوي على الفهرس الأصلي للرقع المقنّعة (المُبعثرة).
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `torch.Tensor` (واحدة لكل من مخرجات الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لكل من مخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لإخراج التضمينات + واحدة لإخراج كل طبقة) من الشكل `(batch_size, height, width, hidden_size)`. حالات مخفية للنموذج عند إخراج كل طبقة بالإضافة إلى إخراجات التضمين الأولية، مع إعادة تشكيلها لتشمل الأبعاد المكانية.

أمثلة:
```python
>>> from transformers import AutoImageProcessor, HieraForPreTraining
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/hiera-tiny-224-mae-hf")
>>> model = HieraForPreTraining.from_pretrained("facebook/hiera-tiny-224-mae-hf")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> loss = outputs.loss
>>> print(list(logits.shape))
[1, 196, 768]
```

## HieraForImageClassification[[transformers.HieraForImageClassification]]

#### transformers.HieraForImageClassification[[transformers.HieraForImageClassification]]

```python
transformers.HieraForImageClassification(config: HieraConfig)
```

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

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

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

نموذج Hiera transformer مع رأس تصنيف صور في الأعلى (طبقة خطية فوق الحالة المخفية النهائية مع متوسط التجميع) مثل ImageNet.

لاحظ أنه من الممكن ضبط Hiera على صور بدقة أعلى من تلك التي تم تدريبه عليها، وذلك عن طريق تعيين `interpolate_pos_encoding` إلى `True` في استدعاء النموذج. سيؤدي هذا إلى استيفاء ترميزات المواقع المُدرَّبة مسبقًا لتتوافق مع الدقة الأعلى.

يرث هذا النموذج من [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.HieraForImageClassification.forward]]

```python
forward(pixel_values, labels: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, interpolate_pos_encoding: bool | None = None, return_dict: bool | None = None, **kwargs)
```

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

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

pixel_values (`` of shape `(batch_size, num_channels, image_size, image_size)`) : The tensors corresponding to the input images. Pixel values can be obtained using [BitImageProcessor](/docs/transformers/main/ar/model_doc/bit#transformers.BitImageProcessor). See [BitImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) for details (`processor_class` uses [BitImageProcessor](/docs/transformers/main/ar/model_doc/bit#transformers.BitImageProcessor) for processing images).

labels (من نوع `torch.LongTensor` بأبعاد `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة تصنيف/الانحدار للصور. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels == 1` يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان `config.num_labels > 1` يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).

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

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

interpolate_pos_encoding (`bool`, *اختياري*) : ما إذا كان سيتم استيفاء ترميزات المواقع المُدرَّبة مسبقًا.

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

**يعيد:** `HieraForImageClassificationOutput` أو `tuple(torch.Tensor)`

A `HieraForImageClassificationOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([HieraConfig](/docs/transformers/main/ar/model_doc/hiera#transformers.HieraConfig)) and inputs.

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`, *اختياري*، يُعاد عند تقديم `labels`) -- خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).
- **logits** (`torch.Tensor` من الشكل `(batch_size, config.num_labels)`) -- درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل مرحلة) بشكل `(batch_size, sequence_length, hidden_size)`. حالات مخفية (تُسمى أيضًا خرائط الميزات) للنموذج عند مخرجات كل مرحلة.
- **attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة (Tuple) من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, patch_size, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`، `optional`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات + واحدة لمخرجات كل مرحلة) بأبعاد `(batch_size, height, width, hidden_size)`. هذه هي حالات الإخفاء المعاد تشكيلها وإعادة لفّها للنموذج.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي المُعاد تشكيلها لتشمل الأبعاد المكانية.

مثال:

```python
>>> from transformers import AutoImageProcessor, HieraForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/hiera-base-224")
>>> model = HieraForImageClassification.from_pretrained("facebook/hiera-base-224")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...
```

