# PPLCNetV3

[PPLCNetV3](https://huggingface.co/papers/2109.15099) هو هيكل تلاففي خفيف مُحسّن للمعالج المركزي (CPU)، مصمّم لتصنيف الصور بكفاءة وللمهامم البصرية اللاحقة. وهو مبني على معمارية PP-LCNet مع استراتيجيات تدريب محسّنة وتحسينات هيكلية لتحقيق توازن أفضل بين الدقة وزمن الاستجابة على أجهزة المعالج المركزي.

## ملاحظات

- يُوفَّر PPLCNetV3 كشبكة هيكلية فقط. لم يتم إصدار نقطة تحقق مسبق التدريب لتصنيف الصور بشكل رسمي.

## PPLCNetV3Config[[transformers.PPLCNetV3Config]]

#### transformers.PPLCNetV3Config[[transformers.PPLCNetV3Config]]

```python
transformers.PPLCNetV3Config(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, scale: float | int = 1.0, block_configs: list | None = None, stem_channels: int = 16, stem_stride: int = 2, reduction: int = 4, divisor: int = 8, hidden_act: str = 'hardswish', _out_features: list[str] | None = None, _out_indices: list[int] | None = None, conv_symmetric_num: int = 4)
```

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

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

scale (`float`، *اختياري*، القيمة الافتراضية 1.0) : عامل التوسيع لأبعاد القنوات في النموذج، يُستخدم لضبط حجم النموذج والتكلفة الحسابية دون تغيير البنية العامة (مثلًا: 0.25، 0.5، 1.0، 1.5).

block_configs (`list[list[tuple]]`، *اختياري*، القيمة الافتراضية `None`) : إعدادات كل كتلة في كل مرحلة. يحتوي كل tuple على: (kernel_size, in_channels, out_channels, stride, use_squeeze_excitation). إذا كانت `None`، يتم استخدام إعدادات PP-LCNet الافتراضية.

stem_channels (`int`، *اختياري*، القيمة الافتراضية 16) : عدد قنوات الإخراج لطبقة الجذع.

stem_stride (`int`، *اختياري*، القيمة الافتراضية 2) : خطوة (stride) لطبقة الالتفاف الجذعية (stem convolution layer).

reduction (`int`, *اختياري*, القيمة الافتراضية 4) : عامل الاختزال لأبعاد قنوات الميزات في كتل الضغط والإثارة (SE)، ويُستخدم لتقليل عدد معاملات النموذج والتعقيد الحسابي مع الحفاظ على قابلية تمثيل الميزات.

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

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

conv_symmetric_num (`int`, *اختياري*, القيمة الافتراضية `4`) : عدد فروع الالتفاف kxk في طبقة إعادة التمثيل القابلة للتعلم، وتُستخدم لتعزيز قدرة استخراج الميزات من خلال البنية متعددة الفروع أثناء التدريب، مع تمكين الاستدلال الفعال عبر إعادة التمثيل الهيكلي.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Pp Lcnet V3Model. تُستخدم لاستحداث نموذج Pp Lcnet V3 وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [PaddlePaddle/Not_yet_released](https://huggingface.co/PaddlePaddle/Not_yet_released)

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

## PPLCNetV3Backbone[[transformers.PPLCNetV3Backbone]]

#### transformers.PPLCNetV3Backbone[[transformers.PPLCNetV3Backbone]]

```python
transformers.PPLCNetV3Backbone(config: PPLCNetV3Config)
```

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

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

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

نموذج العمود الفقري PPLCNetV3 لاستخراج الميزات.

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

```python
forward(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المتناظرة مع الصور المدخلة. يمكن الحصول على قيم البكسل باستخدام `image_processor_class`. راجع `image_processor_class.__call__` للتفاصيل (`processor_class` يستخدم `image_processor_class` لمعالجة الصور).

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

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

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

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

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

  حالات النموذج المخفية عند مخرج كل مرحلة بالإضافة إلى مخرجات التضمين الأولي.
- **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 PPLCNetV3Config, PPLCNetV3Backbone
>>> import torch

>>> config = PPLCNetV3Config()
>>> model = PPLCNetV3Backbone(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
```

