Transformers documentation
TimmWrapper
TimmWrapper
Resumen
Clase auxiliar para habilitar la carga de modelos de timm para ser utilizados con la biblioteca transformers y sus 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)Recursos
Una lista de recursos oficiales de Hugging Face y de la comunidad (indicados por 🌎) para ayudarte a empezar con TimmWrapper.
Para una descripción más detallada, lea la entrada oficial del blog sobre la integración de timm.
TimmWrapperConfig
clase 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 )
Parámetros
- architecture (
str, opcional, valor predeterminado"resnet50") — La arquitectura de timm que se cargará. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - do_pooling (
bool, opcional, valor predeterminadoTrue) — Indica si se debe aplicar pooling al last_hidden_state enTimmWrapperModelo no. - model_args (
dict[str, Any], opcional) — Argumentos de palabra clave adicionales para pasar a la funcióntimm.create_model. Por ejemplo,model_args={"depth": 3}paratimm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1kpara crear un modelo con 3 bloques. El valor predeterminado esNone.
Esta es la clase de configuración para almacenar la configuración de un TimmWrapperModel. Se utiliza para instanciar un modelo Timm Wrapper según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de resnet50
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
TimmWrapperImageProcessor
clase transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: dictarchitecture: str | None = None**kwargs )
Clase envoltorio para modelos de timm para ser utilizados dentro de transformers.
preprocesar
< 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' )
Preprocesa una imagen o un lote de imágenes.
TimmWrapperModel
Clase envoltorio para modelos de timm para ser utilizados en 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)
Parámetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando TimmWrapperImageProcessor. Consulte TimmWrapperImageProcessor.call() para más detalles (processor_classutiliza TimmWrapperImageProcessor para procesar las imágenes). - output_attentions (
bool, opcional) — Indica si se deben devolver los tensores de atención de todas las capas de atención. No es compatible con los modelos envueltos por timm. - output_hidden_states (
bool, opcional) — Si se deben devolver o no los estados ocultos de todas las capas. No es compatible con los modelos envueltos por timm. - return_dict (
bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple. - do_pooling (
bool, opcional) — Indica si se debe aplicar pooling a last_hidden_state enTimmWrapperModelo no. Si se pasaNone, se utiliza el valor dedo_poolingde la configuración. - use_cache (
bool, opcional) — Si se establece enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_key_values).
Devuelve
TimmWrapperModelOutput o tuple(torch.Tensor)
Un TimmWrapperModelOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (TimmWrapperConfig) y las entradas.
El método forward de TimmWrapperModel sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
- last_hidden_state (
torch.Tensor) — El último estado oculto del modelo, la salida antes de aplicar la cabeza de clasificación. - pooler_output (
torch.Tensor, opcional) — La salida agrupada derivada del último estado oculto, si aplica. - hidden_states (
tuple(torch.Tensor), opcional, se devuelve si se estableceoutput_hidden_states=Trueo siconfig.output_hidden_states=True) — Una tupla que contiene los estados ocultos intermedios del modelo en la salida de cada capa o de las capas especificadas. - attentions (
tuple(torch.Tensor), opcional, se devuelve si se estableceoutput_attentions=Trueo siconfig.output_attentions=True.) — Una tupla que contiene los pesos de atención intermedios del modelo en la salida de cada capa. Nota: Actualmente, los modelos de Timm no admiten la salida de atenciones.
Ejemplos:
>>> 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
Clase envoltorio para modelos de timm para ser utilizados en transformers para clasificación de imágenes.
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)
Parámetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando TimmWrapperImageProcessor. Consulte TimmWrapperImageProcessor.call() para más detalles (processor_classutiliza TimmWrapperImageProcessor para procesar las imágenes). - labels (
torch.LongTensorde forma(batch_size,), opcional) — Etiquetas para calcular la pérdida de clasificación/regresión de imágenes. Los índices deben estar en[0, ..., config.num_labels - 1]. Siconfig.num_labels == 1se calcula una pérdida de regresión (pérdida de error cuadrático medio), siconfig.num_labels > 1se calcula una pérdida de clasificación (entropía cruzada). - output_attentions (
bool, opcional) — Indica si se deben devolver los tensores de atención de todas las capas de atención. No es compatible con los modelos envueltos por timm. - output_hidden_states (
bool, opcional) — Si se deben devolver o no los estados ocultos de todas las capas. No es compatible con los modelos envueltos por timm. - return_dict (
bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple. **kwargs: Argumentos de palabra clave adicionales que se pasan al forward del modelotimm.
Devuelve
ImageClassifierOutput o tuple(torch.Tensor)
Un ImageClassifierOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (TimmWrapperConfig) y las entradas.
El método forward de TimmWrapperForImageClassification sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de clasificación (o de regresión si config.num_labels==1).logits (
torch.Tensorde forma(batch_size, config.num_labels)) — Puntuaciones de clasificación (o de regresión si config.num_labels==1) (antes de SoftMax).hidden_states (
tuple(torch.Tensor), opcional, devuelto cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustación, + una para la salida de cada etapa) de forma(batch_size, sequence_length, hidden_size). Estados ocultos (también llamados mapas de características) del modelo en la salida de cada etapa.attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, patch_size, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Ejemplos:
>>> 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)