# RegNet

## نظرة عامة

قُدِّم نموذج RegNet في [Designing Network Design Spaces](https://huggingface.co/papers/2003.13678) بواسطة Ilija Radosavovic وRaj Prateek Kosaraju وRoss Girshick وKaiming He وPiotr Dollár.

صمّم المؤلفون فضاءات بحث لتنفيذ البحث المعماري العصبي (NAS). يبدأون أولاً من فضاء بحث ذي أبعاد عالية، ثم يقللون من مساحة البحث بشكل تكراري من خلال تطبيق قيود تجريبية استناداً إلى أفضل النماذج أداءً التي تم اختيارها عشوائياً بواسطة فضاء البحث الحالي.

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

*في هذا العمل، نعرض نموذجًا جديدًا لتصميم الشبكات. هدفنا هو المساهمة في تعميق فهم تصميم الشبكات واكتشاف مبادئ تصميمية قابلة للتعميم عبر مختلف السياقات. وبدلًا من التركيز على تصميم أمثلة شبكية فردية، نصمم فضاءات تصميم للشبكات تُعرِّف مجموعات من الشبكات. العملية الكلية تشبه التصميم اليدوي الكلاسيكي للشبكات، لكنها مرفوعة إلى مستوى فضاء التصميم. باستخدام منهجيتنا، نستكشف البُنية كجانب من جوانب تصميم الشبكات، ونصل إلى فضاء تصميم منخفض الأبعاد يتكون من شبكات بسيطة وقاعدية نسميها RegNet. الفكرة الجوهرية في معلمات RegNet بسيطة بشكل مفاجئ: يمكن تفسير عرض وعمق الشبكات الجيدة بدالة خطية مُكمَّاة. نُحلل فضاء تصميم RegNet ونصل إلى نتائج مثيرة للاهتمام لا تتوافق مع الممارسات الحالية في تصميم الشبكات. يوفر فضاء تصميم RegNet شبكات بسيطة وسريعة تعمل بشكل جيد عبر نطاق واسع من أنظمة flop. وفي ظل إعدادات تدريب وقدرات flop مماثلة، تتفوق نماذج RegNet على نماذج EfficientNet الشائعة مع أن تكون أسرع حتى 5 أضعاف على وحدات معالجة الرسومات.*

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

The huge 10B model from [Self-supervised Pretraining of Visual Features in the Wild](https://huggingface.co/papers/2103.01988), trained on  one billion Instagram images, is available on the [hub](https://huggingface.co/facebook/regnet-y-10b-seer)

## الموارد

قائمة بموارد رسمية من Hugging Face وموارد مجتمعية (مشار إليها بـ 🌎) لمساعدتك على البدء مع RegNet.

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

إذا كنت مهتمًا بتقديم مورد ليُدرج هنا، فلا تتردد في فتح طلب سحب وسنقوم بمراجعته! يُفضَّل أن يُظهر المورد شيئًا جديدًا بدلاً من تكرار مورد موجود مسبقًا.

## RegNetConfig[[transformers.RegNetConfig]]

#### transformers.RegNetConfig[[transformers.RegNetConfig]]

```python
transformers.RegNetConfig(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, num_channels: int = 3, embedding_size: int = 32, hidden_sizes: list[int] | tuple[int, ...] = (128, 192, 512, 1088), depths: list[int] | tuple[int, ...] = (2, 6, 12, 2), groups_width: int = 64, layer_type: str = 'y', hidden_act: str = 'relu', downsample_in_first_stage: bool = True)
```

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

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

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

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

hidden_sizes (`Union[list[int], tuple[int, ...]]`، *اختياري*، القيمة الافتراضية `(128, 192, 512, 1088)`) : الأبعاد (حجم المخفي) في كل مرحلة من مراحل النموذج.

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

groups_width (`int`، *اختياري*، القيمة الافتراضية 64) : عرض المجموعة لكل مرحلة.

layer_type (`str`, *optional*, defaults to `"y"`) : The layer to use, it can be either `"x" or `"y"`. An `x` layer is a ResNet's BottleNeck layer with `reduction` fixed to `1`. While a `y` layer is a `x` but with squeeze and excitation. Please refer to the paper for a detailed explanation of how these layers were constructed.

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

downsample_in_first_stage (`bool`، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `True`، فإن المرحلة الأولى ستقوم بتقليل حجم المدخلات باستخدام `stride` بقيمة 2.

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

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

مثال:
```python
>>> from transformers import RegNetConfig, RegNetModel

>>> # Initializing a RegNet regnet-y-40 style configuration
>>> configuration = RegNetConfig()
>>> # Initializing a model from the regnet-y-40 style configuration
>>> model = RegNetModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
```

## RegNetModel[[transformers.RegNetModel]]

#### transformers.RegNetModel[[transformers.RegNetModel]]

```python
transformers.RegNetModel(config: RegNetConfig)
```

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

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

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

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

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

```python
forward(pixel_values: Tensor, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

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

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

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

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

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

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

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

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

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

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

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

مثال:

```python
```

## RegNetForImageClassification[[transformers.RegNetForImageClassification]]

#### transformers.RegNetForImageClassification[[transformers.RegNetForImageClassification]]

```python
transformers.RegNetForImageClassification(config: RegNetConfig)
```

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

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

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

نموذج RegNet مع رأس تصنيف الصور في الأعلى (طبقة خطية فوق الميزات المجمعة)، مثل ImageNet.

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

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

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

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

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

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

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

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

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

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

تُعيد طريقة [RegNetForImageClassification](/docs/transformers/main/ar/model_doc/regnet#transformers.RegNetForImageClassification) الخاصة بالتقديم (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, num_channels, height, width)`. حالات النموذج المخفية (المعروفة أيضًا باسم خرائط الميزات) عند مخرجات كل مرحلة.

مثال:

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/regnet-y-040")
>>> model = RegNetForImageClassification.from_pretrained("facebook/regnet-y-040")

>>> 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])
...
```

