Transformers documentation
RegNet
Ce modèle a été publié dans HF papers le 2020-03-30 et ajouté à Hugging Face Transformers le 2022-04-07.
RegNet
Aperçu
Le modèle RegNet a été proposé dans Designing Network Design Spaces par Ilija Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He, Piotr Dollár.
Les auteurs conçoivent des espaces de recherche pour effectuer la recherche d'architecture neuronale (NAS). Ils commencent d'abord par un espace de recherche de haute dimension et réduisent itérativement cet espace en appliquant empiriquement des contraintes basées sur les modèles les plus performants échantillonnés par l'espace de recherche actuel.
L'abstract de l'article est le suivant :
Dans ce travail, nous présentons un nouveau paradigme de conception de réseaux. Notre objectif est de contribuer à faire progresser la compréhension de la conception de réseaux et de découvrir des principes de conception qui se généralisent à travers différents contextes. Plutôt que de nous concentrer sur la conception d’instances individuelles de réseaux, nous concevons des espaces de conception de réseaux qui paramètrent des populations de réseaux. Le processus global est analogue à la conception manuelle classique de réseaux, mais élevé au niveau de l’espace de conception. En utilisant notre méthodologie, nous explorons l’aspect structurel de la conception de réseaux et aboutissons à un espace de conception de faible dimension composé de réseaux simples et régulaires que nous appelons RegNet. L’idée centrale de la paramétrisation RegNet est étonnamment simple : les largeurs et les profondeurs des bons réseaux peuvent être expliquées par une fonction linéaire quantifiée. Nous analysons l’espace de conception RegNet et aboutissons à des résultats intéressants qui ne correspondent pas à la pratique actuelle de la conception de réseaux. L’espace de conception RegNet fournit des réseaux simples et rapides qui fonctionnent bien dans une large gamme de régimes de flops. Dans des conditions d’entraînement et des flops comparables, les modèles RegNet surpassent les modèles EfficientNet populaires tout en étant jusqu’à 5 fois plus rapides sur GPU.
Ce modèle a été contribué par Francesco. Le code d’origine est disponible ici.
Le modèle de 10 milliards de paramètres issu de Self-supervised Pretraining of Visual Features in the Wild, entraîné sur un milliard d’images Instagram, est disponible sur le hub
Ressources
Une liste de ressources officielles Hugging Face et de la communauté (indiquées par 🌎) pour vous aider à démarrer avec RegNet.
- RegNetForImageClassification est pris en charge par ce notebook.
- Voir aussi : Guide de la tâche de classification d'images
Si vous souhaitez soumettre une ressource pour qu'elle soit incluse ici, n'hésitez pas à ouvrir une Pull Request et nous la examinerons ! La ressource devrait idéalement démontrer quelque chose de nouveau plutôt que de dupliquer une ressource existante.
RegNetConfig
classe transformers.RegNetConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonenum_channels: int = 3embedding_size: int = 32hidden_sizes: list[int] | tuple[int, ...] = (128, 192, 512, 1088)depths: list[int] | tuple[int, ...] = (2, 6, 12, 2)groups_width: int = 64layer_type: str = 'y'hidden_act: str = 'relu'downsample_in_first_stage: bool = True )
Paramètres
- num_channels (
int, facultatif, par défaut3) — Le nombre de canaux d'entrée. - embedding_size (
int, facultatif, valeur par défaut32) — Dimension des embeddings et des états cachés. - hidden_sizes (
Union[list[int], tuple[int, ...]], facultatif, par défaut(128, 192, 512, 1088)) — Dimension (taille cachée) à chaque étape du modèle. - depths (
Union[list[int], tuple[int, ...]], facultatif, par défaut(2, 6, 12, 2)) — Profondeur de chaque couche du Transformer. - groups_width (
int, facultatif, valeur par défaut : 64) — Largeur du groupe pour chaque étape. - layer_type (
str, optional, defaults to"y") — The layer to use, it can be either"x" or“y”. Anxlayer is a ResNet's BottleNeck layer withreductionfixed to1. While aylayer is ax` but with squeeze and excitation. Please refer to the paper for a detailed explanation of how these layers were constructed. - hidden_act (
str, facultatif, par défautrelu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) dans le décodeur. Par exemple,"gelu","relu","silu", etc. - downsample_in_first_stage (
bool, facultatif, valeur par défautFalse) — SiTrue, la première étape effectue un sous-échantillonnage des entrées avec unstridede 2.
Ceci est la classe de configuration destinée à stocker la configuration d'un RegNetModel. Elle est utilisée pour instancier un modèle Regnet en fonction des arguments spécifiés, en définissant l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de facebook/regnet-y-040
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
Exemple :
>>> 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.configRegNetModel
classe transformers.RegNetModel
< source >( config: RegNetConfig )
Paramètres
- config (RegNetConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le modèle Regnet brut, qui produit des états cachés bruts sans aucune tête spécifique au sommet.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
forward
< source >( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPoolingAndNoAttention or tuple(torch.FloatTensor)
Paramètres
- pixel_values (
torch.Tensorde forme(batch_size, num_channels, image_size, image_size)) — Les tenseurs correspondant aux images d'entrée. Les valeurs de pixels peuvent être obtenues à l'aide de ConvNextImageProcessor. Consultez ConvNextImageProcessor.call() pour plus de détails (processor_classutilise ConvNextImageProcessor pour le traitement des images). - output_hidden_states (
bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Voirhidden_statessous les tenseurs retournés pour plus de détails. - return_dict (
bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple.
Retourne
BaseModelOutputWithPoolingAndNoAttention ou tuple(torch.FloatTensor)
Un BaseModelOutputWithPoolingAndNoAttention ou un tuple de
torch.FloatTensor (si return_dict=False est passé ou si config.return_dict=False) comprenant divers
éléments en fonction de la configuration (RegNetConfig) et des entrées.
La méthode forward de RegNetModel redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
last_hidden_state (
torch.FloatTensorde forme(batch_size, num_channels, height, width)) — Séquence d'états cachés à la sortie de la dernière couche du modèle.pooler_output (
torch.FloatTensorde forme(batch_size, hidden_size)) — État caché de la dernière couche après une opération de pooling sur les dimensions spatiales.hidden_states (
tuple(torch.FloatTensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.FloatTensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, num_channels, height, width).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
RegNetForImageClassification
classe transformers.RegNetForImageClassification
< source >( config: RegNetConfig )
Paramètres
- config (RegNetConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Modèle RegNet avec une tête de classification d'images au sommet (une couche linéaire au-dessus des fonctionnalités agrégées), par exemple pour ImageNet.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
forward
< source >( pixel_values: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutputWithNoAttention or tuple(torch.FloatTensor)
Paramètres
- pixel_values (
torch.FloatTensorde forme(batch_size, num_channels, image_size, image_size), facultatif) — Les tenseurs correspondant aux images d’entrée. Les valeurs de pixels peuvent être obtenues à l’aide de ConvNextImageProcessor. Voir ConvNextImageProcessor.call() pour plus de détails (processor_classutilise ConvNextImageProcessor pour le traitement des images). - labels (
torch.LongTensorde forme(batch_size,), facultatif) — Étiquettes pour le calcul de la perte de classification/régression d'image. Les indices doivent être dans[0, ..., config.num_labels - 1]. Siconfig.num_labels > 1, une perte de classification est calculée (entropie croisée). - output_hidden_states (
bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Voirhidden_statessous les tenseurs retournés pour plus de détails. - return_dict (
bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple.
Retourne
ImageClassifierOutputWithNoAttention ou tuple(torch.FloatTensor)
Un ImageClassifierOutputWithNoAttention ou un tuple de
torch.FloatTensor (si return_dict=False est passé ou si config.return_dict=False) comprenant divers
éléments selon la configuration (RegNetConfig) et les entrées.
La méthode forward de RegNetForImageClassification redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
- loss (
torch.FloatTensorde forme(1,), facultatif, renvoyé lorsquelabelsest fourni) — Perte de classification (ou de régression si config.num_labels==1). - logits (
torch.FloatTensorde forme(batch_size, config.num_labels)) — Scores de classification (ou de régression si config.num_labels==1) (avant SoftMax). - hidden_states (
tuple(torch.FloatTensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.FloatTensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque étape) de forme(batch_size, num_channels, height, width). États cachés (aussi appelés cartes de caractéristiques) du modèle à la sortie de chaque étape.
Exemple :
>>> 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])
...