# PPLCNetV3

[PPLCNetV3](https://huggingface.co/papers/2109.15099) adalah backbone konvolusional ringan yang dioptimalkan untuk CPU, dirancang untuk klasifikasi gambar yang efisien dan tugas visi turunan lainnya. Arsitektur ini dibangun di atas arsitektur PP-LCNet dengan strategi pelatihan yang ditingkatkan dan penyempurnaan struktural untuk mencapai kompromi akurasi-latensi yang lebih baik pada perangkat keras CPU.

## Catatan

- PPLCNetV3 disediakan hanya sebagai jaringan backbone. Tidak ada checkpoint klasifikasi gambar terlatih yang telah dirilis secara resmi.

## 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)
```

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/pp_lcnet_v3/configuration_pp_lcnet_v3.py#L31)

**Parameter:**

scale (`float`, *opsional*, default 1.0) : Faktor penskalaan untuk dimensi channel model, digunakan untuk menyesuaikan ukuran model dan biaya komputasi tanpa mengubah arsitektur keseluruhan (misalnya, 0.25, 0.5, 1.0, 1.5).

block_configs (`list[list[tuple]]`, *opsional*, defaultnya `None`) : Konfigurasi untuk setiap blok di setiap tahap. Setiap tuple berisi: (kernel_size, in_channels, out_channels, stride, use_squeeze_excitation). Jika `None`, menggunakan konfigurasi PP-LCNet default.

stem_channels (`int`, *opsional*, default 16) : Jumlah saluran output untuk lapisan stem.

stem_stride (`int`, *opsional*, defaultnya 2) : Stride untuk lapisan konvolusi stem.

reduction (`int`, *opsional*, default 4) : Faktor reduksi untuk dimensi kanal fitur dalam blok squeeze-and-excitation (SE), digunakan untuk mengurangi jumlah parameter model dan kompleksitas komputasi sambil mempertahankan representabilitas fitur.

divisor (`int`, *opsional*, default 8) : Pembagi yang digunakan untuk memastikan bahwa berbagai parameter model (misalnya, dimensi channel, ukuran kernel) merupakan kelipatan dari nilai ini, guna mendorong implementasi model yang efisien dan pemanfaatan sumber daya yang optimal.

hidden_act (`str`, *opsional*, defaultnya `hardswish`) : Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, `"gelu"`, `"relu"`, `"silu"`, dan sebagainya.

conv_symmetric_num (`int`, *opsional*, defaultnya `4`) : Jumlah cabang konvolusi kxk pada lapisan reparameterisasi yang dapat dipelajari, digunakan untuk meningkatkan kemampuan ekstraksi fitur melalui arsitektur multi-cabang selama pelatihan sambil memungkinkan inferensi yang efisien melalui reparameterisasi struktural.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Pp Lcnet V3Model. Kelas ini digunakan untuk membuat instans model Pp Lcnet V3 sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari [PaddlePaddle/Not_yet_released](https://huggingface.co/PaddlePaddle/Not_yet_released)

Objek konfigurasi mewarisi dari [PreTrainedConfig](/docs/transformers/v5.23.0/id/main_classes/configuration#transformers.PreTrainedConfig) dan dapat digunakan untuk mengontrol keluaran model. Baca dokumentasi dari [PreTrainedConfig](/docs/transformers/v5.23.0/id/main_classes/configuration#transformers.PreTrainedConfig) untuk informasi lebih lanjut.

## PPLCNetV3Backbone[[transformers.PPLCNetV3Backbone]]

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

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

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/pp_lcnet_v3/modeling_pp_lcnet_v3.py#L327)

**Parameter:**

config ([PPLCNetV3Config](/docs/transformers/v5.23.0/id/model_doc/pp_lcnet_v3#transformers.PPLCNetV3Config)) : Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode [from_pretrained()](/docs/transformers/v5.23.0/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model backbone PPLCNetV3 untuk ekstraksi fitur.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/v5.23.0/id/main_classes/model#transformers.PreTrainedModel). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka ini untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran input embeddings, memangkas heads, dll.)

Model ini juga merupakan subclass dari [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

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

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

[Sumber](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/pp_lcnet_v3/modeling_pp_lcnet_v3.py#L340)

**Parameter:**

pixel_values (`torch.Tensor` dengan bentuk `(batch_size, num_channels, image_size, image_size)`) : Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan `image_processor_class`. Lihat `image_processor_class.__call__` untuk detailnya (`processor_class` menggunakan `image_processor_class` untuk memproses gambar).

**Mengembalikan:** `BackboneOutput` atau `tuple(torch.Tensor)`

`BackboneOutput` atau tuple dari `torch.Tensor` (jika `return_dict=False` dilewatkan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([PPLCNetV3Config](/docs/transformers/v5.23.0/id/model_doc/pp_lcnet_v3#transformers.PPLCNetV3Config)) dan input.

Metode forward dari [PPLCNetV3Backbone](/docs/transformers/v5.23.0/id/model_doc/pp_lcnet_v3#transformers.PPLCNetV3Backbone) menimpa metode khusus `__call__`.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance `Module` setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

- **feature_maps** (`tuple(torch.Tensor)` dengan bentuk `(batch_size, num_channels, height, width)`) -- Feature maps dari setiap tahap.
- **hidden_states** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_hidden_states=True` dilewatkan atau ketika `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output embeddings + satu untuk output setiap layer) dengan bentuk `(batch_size, sequence_length, hidden_size)` atau `(batch_size, num_channels, height, width)`, tergantung pada backbone.

  Hidden-states model pada output setiap tahap ditambah output embedding awal.
- **attentions** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_attentions=True` dilewatkan atau ketika `config.output_attentions=True`) -- Tuple dari `torch.Tensor` (satu untuk setiap layer) dengan bentuk `(batch_size, num_heads, sequence_length, sequence_length)`. Hanya berlaku jika backbone menggunakan attention.

  Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

Contoh:

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

