Transformers documentation
TimmWrapper
TimmWrapper
Aperçu
Classe d'aide permettant de charger des modèles timm pour les utiliser avec la bibliothèque transformers et ses autoclasses.
from urllib.request import urlopen
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForImageClassification
# Load image
image = Image.open(urlopen(
'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
))
# Load model and image processor
checkpoint = "timm/resnet50.a1_in1k"
image_processor = AutoImageProcessor.from_pretrained(checkpoint)
model = AutoModelForImageClassification.from_pretrained(checkpoint).eval( device_map="auto")
# Preprocess image
inputs = image_processor(image)
# Forward pass
with torch.no_grad():
logits = model(**inputs).logits
# Get top 5 predictions
top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)Ressources
Une liste de ressources officielles de Hugging Face et de la communauté (indiquées par 🌎) pour vous aider à démarrer avec TimmWrapper.
Pour un aperçu plus détaillé, veuillez lire le article de blog officiel sur l'intégration de timm.
TimmWrapperConfig
classe transformers.TimmWrapperConfig
< 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 = Nonearchitecture: str = 'resnet50'initializer_range: float = 0.02do_pooling: bool = Truemodel_args: dict[str, typing.Any] | None = None )
Paramètres
- architecture (
str, facultatif, par défaut"resnet50") — L’architecture timm à charger. - initializer_range (
float, facultatif, par défaut0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids. - do_pooling (
bool, facultatif, par défautTrue) — Indique s'il faut effectuer un pooling sur last_hidden_state dansTimmWrapperModelou non. - model_args (
dict[str, Any], facultatif) — Arguments supplémentaires à passer à la fonctiontimm.create_model. Par exemple,model_args={"depth": 3}pourtimm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1kafin de créer un modèle avec 3 blocs. La valeur par défaut estNone.
Ceci est la classe de configuration destinée à stocker la configuration d'un TimmWrapperModel. Elle est utilisée pour instancier un modèle Timm Wrapper 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 resnet50
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.
TimmWrapperImageProcessor
classe transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: dictarchitecture: str | None = None**kwargs )
Classe enveloppe pour les modèles timm destinée à être utilisée dans transformers.
prétraiter
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]return_tensors: str | transformers.utils.generic.TensorType | None = 'pt' )
Prétraitez une image ou un lot d'images.
TimmWrapperModel
Classe enveloppe pour les modèles timm destinés à être utilisés dans transformers.
forward
< source >( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = Nonedo_pooling: bool | None = Noneuse_cache: bool | None = None**kwargs ) → TimmWrapperModelOutput or tuple(torch.Tensor)
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 TimmWrapperImageProcessor. Voir TimmWrapperImageProcessor.call() pour plus de détails (processor_classutilise TimmWrapperImageProcessor pour le traitement des images). - output_attentions (
bool, facultatif) — Indique s'il faut retourner les tenseurs d'attention de toutes les couches d'attention. Non compatible avec les modèles enveloppés par timm. - output_hidden_states (
bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Non compatible avec les modèles enveloppés par timm. - return_dict (
bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple. - do_pooling (
bool, facultatif) — Indique s'il faut effectuer un pooling sur leTimmWrapperModelou non. SiNoneest passé, la valeur dedo_poolingissue de la configuration est utilisée. - use_cache (
bool, facultatif) — Si défini surTrue, les états clé-valeurpast_key_valuessont renvoyés et peuvent être utilisés pour accélérer le décodage (voirpast_key_values).
Retourne
TimmWrapperModelOutput ou tuple(torch.Tensor)
Un TimmWrapperModelOutput ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (TimmWrapperConfig) et des entrées.
La méthode forward de TimmWrapperModel 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.Tensor) — Le dernier état caché du modèle, en sortie avant l'application de la tête de classification. - pooler_output (
torch.Tensor, facultatif) — La sortie agrégée dérivée de l'état caché final, le cas échéant. - hidden_states (
tuple(torch.Tensor), facultatif, renvoyé sioutput_hidden_states=Trueest défini ou siconfig.output_hidden_states=True) — Un tuple contenant les états cachés intermédiaires du modèle à la sortie de chaque couche ou des couches spécifiées. - attentions (
tuple(torch.Tensor), facultatif, renvoyé sioutput_attentions=Trueest défini ou siconfig.output_attentions=True.) — Un tuple contenant les poids d'attention intermédiaires du modèle à la sortie de chaque couche. Remarque : Actuellement, les modèles Timm ne prennent pas en charge la sortie des attentions.
Exemples :
>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModel, AutoImageProcessor
>>> # Load image
>>> image = Image.open(urlopen(
... 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))
>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModel.from_pretrained(checkpoint).eval()
>>> # Preprocess image
>>> inputs = image_processor(image)
>>> # Forward pass
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> # Get pooled output
>>> pooled_output = outputs.pooler_output
>>> # Get last hidden state
>>> last_hidden_state = outputs.last_hidden_stateTimmWrapperForImageClassification
Classe enveloppe pour les modèles timm destinés à être utilisés dans transformers pour la classification d'images.
forward
< source >( pixel_values: Tensorlabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutput or tuple(torch.Tensor)
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 TimmWrapperImageProcessor. Voir TimmWrapperImageProcessor.call() pour plus de détails (processor_classutilise TimmWrapperImageProcessor 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 régression est calculée (perte du carré moyen). Siconfig.num_labels > 1, une perte de classification est calculée (entropie croisée). - output_attentions (
bool, facultatif) — Indique s'il faut retourner les tenseurs d'attention de toutes les couches d'attention. Non compatible avec les modèles enveloppés par timm. - output_hidden_states (
bool, facultatif) — Indique s'il faut retourner les états cachés de toutes les couches. Non compatible avec les modèles enveloppés par timm. - return_dict (
bool, facultatif) — Indique s'il faut retourner un ModelOutput plutôt qu'un simple tuple. **kwargs : Arguments supplémentaires passés au forward du modèletimm.
Retourne
ImageClassifierOutput ou tuple(torch.Tensor)
Un ImageClassifierOutput ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (TimmWrapperConfig) et des entrées.
La méthode forward de TimmWrapperForImageClassification 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.Tensorde forme(1,), facultatif, renvoyé lorsquelabelsest fourni) — Perte de classification (ou de régression si config.num_labels==1).logits (
torch.Tensorde forme(batch_size, config.num_labels)) — Scores de classification (ou de régression si config.num_labels==1) (avant SoftMax).hidden_states (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.Tensor(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, sequence_length, hidden_size). États cachés (également appelés cartes de caractéristiques) du modèle à la sortie de chaque étape.attentions (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.Tensor(un par couche) de forme(batch_size, num_heads, patch_size, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.
Exemples :
>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModelForImageClassification, AutoImageProcessor
>>> # Load image
>>> image = Image.open(urlopen(
... 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))
>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModelForImageClassification.from_pretrained(checkpoint).eval()
>>> # Preprocess image
>>> inputs = image_processor(image)
>>> # Forward pass
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # Get top 5 predictions
>>> top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)