# RegNet

## Ikhtisar

Model RegNet diusulkan dalam [Designing Network Design Spaces](https://huggingface.co/papers/2003.13678) oleh Ilija Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He, Piotr Dollár.

Para penulis merancang ruang pencarian untuk melakukan Neural Architecture Search (NAS). Mereka memulai dari ruang pencarian berdimensi tinggi dan secara iteratif mengurangi ruang pencarian dengan menerapkan batasan secara empiris berdasarkan model berkinerja terbaik yang disampelkan oleh ruang pencarian saat ini.

Abstrak dari makalah tersebut adalah sebagai berikut:

*Dalam karya ini, kami memperkenalkan paradigma desain jaringan baru. Tujuan kami adalah membantu memajukan pemahaman tentang desain jaringan dan menemukan prinsip desain yang dapat digeneralisasikan di berbagai pengaturan. Alih-alih berfokus pada merancang instance jaringan individual, kami merancang ruang desain jaringan yang memparametrisasi populasi jaringan. Proses keseluruhan ini analog dengan desain manual klasik untuk jaringan, tetapi ditingkatkan ke level ruang desain. Dengan menggunakan metodologi kami, kami mengeksplorasi aspek struktur dari desain jaringan dan sampai pada ruang desain berdimensi rendah yang terdiri dari jaringan sederhana dan teratur yang kami sebut RegNet. Inti dari parametrisasi RegNet ternyata sangat sederhana: lebar dan kedalaman jaringan yang baik dapat dijelaskan oleh fungsi linear terkuantisasi. Kami menganalisis ruang desain RegNet dan sampai pada temuan menarik yang tidak sesuai dengan praktik desain jaringan saat ini. Ruang desain RegNet menyediakan jaringan yang sederhana dan cepat yang bekerja dengan baik di berbagai rentang flop. Dengan pengaturan pelatihan dan flop yang sebanding, model RegNet melampaui model EfficientNet yang populer sambil menjadi hingga 5x lebih cepat pada GPU.*

Model ini disumbangkan oleh [Francesco](https://huggingface.co/Francesco). Kode aslinya dapat ditemukan [di sini](https://github.com/facebookresearch/pycls).

Model 10B besar dari [Self-supervised Pretraining of Visual Features in the Wild](https://huggingface.co/papers/2103.01988), yang dilatih pada satu miliar gambar Instagram, tersedia di [hub](https://huggingface.co/facebook/regnet-y-10b-seer)

## Sumber daya

Daftar sumber resmi Hugging Face dan komunitas (ditandai dengan 🌎) untuk membantu Anda memulai dengan RegNet.

- [RegNetForImageClassification](/docs/transformers/main/id/model_doc/regnet#transformers.RegNetForImageClassification) didukung oleh [notebook](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb) ini.
- Lihat juga: [Panduan tugas klasifikasi gambar](../tasks/image_classification)

Jika Anda tertarik untuk mengirimkan sumber daya agar disertakan di sini, silakan buka Pull Request dan kami akan meninjaunya! Sumber daya tersebut sebaiknya mendemonstrasikan sesuatu yang baru, bukan menduplikasi sumber daya yang sudah ada.

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/regnet/configuration_regnet.py#L24)

**Parameter:**

num_channels (`int`, *opsional*, default `3`) : Jumlah saluran input.

embedding_size (`int`, *opsional*, defaultnya `32`) : Dimensi dari embeddings dan hidden states.

hidden_sizes (`Union[list[int], tuple[int, ...]]`, *opsional*, defaultnya `(128, 192, 512, 1088)`) : Dimensi (ukuran tersembunyi) pada setiap tahap model.

depths (`Union[list[int], tuple[int, ...]]`, *opsional*, defaultnya `(2, 6, 12, 2)`) : Kedalaman setiap lapisan dalam Transformer.

groups_width (`int`, *opsional*, defaultnya 64) : Lebar grup untuk setiap tahap.

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`, *opsional*, defaultnya `relu`) : Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, `"gelu"`, `"relu"`, `"silu"`, dan sebagainya.

downsample_in_first_stage (`bool`, *opsional*, defaultnya `False`) : Jika `True`, tahap pertama akan melakukan downsampling pada input menggunakan `stride` sebesar 2.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari RegNetModel. Kelas ini digunakan untuk membuat instans model Regnet sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari [facebook/regnet-y-040](https://huggingface.co/facebook/regnet-y-040)

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

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/regnet/modeling_regnet.py#L282)

**Parameter:**

config ([RegNetConfig](/docs/transformers/main/id/model_doc/regnet#transformers.RegNetConfig)) : 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/main/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model Regnet polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/main/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.RegNetModel.forward]]

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/regnet/modeling_regnet.py#L292)

**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 [ConvNextImageProcessor](/docs/transformers/main/id/model_doc/convnext#transformers.ConvNextImageProcessor). Lihat [ConvNextImageProcessor.__call__()](/docs/transformers/main/id/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) untuk detailnya (`processor_class` menggunakan [ConvNextImageProcessor](/docs/transformers/main/id/model_doc/convnext#transformers.ConvNextImageProcessor) untuk memproses gambar).

output_hidden_states (`bool`, *opsional*) : Apakah akan mengembalikan hidden states dari semua lapisan. Lihat `hidden_states` di bawah tensor yang dikembalikan untuk detail lebih lanjut.

return_dict (`bool`, *opsional*) : Apakah akan mengembalikan [ModelOutput](/docs/transformers/main/id/main_classes/output#transformers.utils.ModelOutput) alih-alih tuple biasa.

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

Sebuah `BaseModelOutputWithPoolingAndNoAttention` atau tuple dari `torch.Tensor` (jika `return_dict=False` dilewatkan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([RegNetConfig](/docs/transformers/main/id/model_doc/regnet#transformers.RegNetConfig)) dan input.

Metode forward dari [RegNetModel](/docs/transformers/main/id/model_doc/regnet#transformers.RegNetModel) 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.

- **last_hidden_state** (`torch.Tensor` dengan bentuk `(batch_size, num_channels, height, width)`) -- Urutan hidden-state pada keluaran lapisan terakhir model.
- **pooler_output** (`torch.Tensor` dengan bentuk `(batch_size, hidden_size)`) -- State tersembunyi dari lapisan terakhir setelah operasi pooling pada dimensi spasial.
- **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 dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, num_channels, height, width)`.

  Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

Contoh:

```python
```

## RegNetForImageClassification[[transformers.RegNetForImageClassification]]

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

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/regnet/modeling_regnet.py#L332)

**Parameter:**

config ([RegNetConfig](/docs/transformers/main/id/model_doc/regnet#transformers.RegNetConfig)) : 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/main/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model RegNet dengan kepala klasifikasi gambar di atasnya (lapisan linear di atas fitur yang dipooling), misalnya untuk ImageNet.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/main/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.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)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/regnet/modeling_regnet.py#L345)

**Parameter:**

pixel_values (`torch.Tensor` dengan bentuk `(batch_size, num_channels, image_size, image_size)`, *opsional*) : Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan [ConvNextImageProcessor](/docs/transformers/main/id/model_doc/convnext#transformers.ConvNextImageProcessor). Lihat [ConvNextImageProcessor.__call__()](/docs/transformers/main/id/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) untuk detailnya (`processor_class` menggunakan [ConvNextImageProcessor](/docs/transformers/main/id/model_doc/convnext#transformers.ConvNextImageProcessor) untuk memproses gambar).

labels (`torch.LongTensor` dengan bentuk `(batch_size,)`, *opsional*) : Label untuk menghitung loss klasifikasi/regresi gambar. Indeks harus berada dalam `[0, ..., config.num_labels - 1]`. Jika `config.num_labels > 1`, loss klasifikasi dihitung (Cross-Entropy).

output_hidden_states (`bool`, *opsional*) : Apakah akan mengembalikan hidden states dari semua lapisan. Lihat `hidden_states` di bawah tensor yang dikembalikan untuk detail lebih lanjut.

return_dict (`bool`, *opsional*) : Apakah akan mengembalikan [ModelOutput](/docs/transformers/main/id/main_classes/output#transformers.utils.ModelOutput) alih-alih tuple biasa.

**Mengembalikan:** [ImageClassifierOutputWithNoAttention](/docs/transformers/main/id/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) atau `tuple(torch.Tensor)`

[ImageClassifierOutputWithNoAttention](/docs/transformers/main/id/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) atau tuple dari `torch.Tensor` (jika `return_dict=False` diteruskan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([RegNetConfig](/docs/transformers/main/id/model_doc/regnet#transformers.RegNetConfig)) dan input.

Metode forward dari [RegNetForImageClassification](/docs/transformers/main/id/model_doc/regnet#transformers.RegNetForImageClassification) 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.

- **loss** (`torch.Tensor` dengan bentuk `(1,)`, *opsional*, dikembalikan saat `labels` disediakan) -- Loss klasifikasi (atau regresi jika config.num_labels==1).
- **logits** (`torch.Tensor` dengan bentuk `(batch_size, config.num_labels)`) -- Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).
- **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 dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap tahap) dengan bentuk `(batch_size, num_channels, height, width)`. Hidden-states (juga disebut feature maps) dari model pada output dari setiap tahap.

Contoh:

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

