Transformers documentation
TimmWrapper
TimmWrapper
Visão geral
Classe auxiliar para permitir o carregamento de modelos timm para uso com a biblioteca transformers e suas 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
Uma lista de recursos oficiais do Hugging Face e da comunidade (indicados por 🌎) para ajudar você a começar com o TimmWrapper.
Para uma visão mais detalhada, leia o post oficial no blog sobre a integração com o 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 )
Parâmetros
- architecture (
str, opcional, padrão"resnet50") — A arquitetura do timm a ser carregada. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - do_pooling (
bool, opcional, padrãoTrue) — Indica se deve ou não aplicar pooling ao last_hidden_state emTimmWrapperModel. - model_args (
dict[str, Any], opcional) — Argumentos de palavra-chave adicionais para passar à funçãotimm.create_model. Por exemplo,model_args={"depth": 3}paratimm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1kpara criar um modelo com 3 blocos. O valor padrão éNone.
Esta é a classe de configuração para armazenar a configuração de um TimmWrapperModel. Ela é usada para instanciar um modelo Timm Wrapper de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do resnet50
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
TimmWrapperImageProcessor
classe transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: dictarchitecture: str | None = None**kwargs )
Classe de encapsulamento para modelos timm a serem usados dentro do transformers.
pré-processamento
< 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é-processa uma imagem ou um lote de imagens.
TimmWrapperModel
Classe de wrapper para modelos timm a serem usados em 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)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando TimmWrapperImageProcessor. Consulte TimmWrapperImageProcessor.call() para obter detalhes (processor_classusa TimmWrapperImageProcessor para processar as imagens). - output_attentions (
bool, opcional) — Indica se os tensores de atenção de todas as camadas de atenção devem ser retornados. Não é compatível com modelos embrulhados pelo timm. - output_hidden_states (
bool, opcional) — Se as camadas ocultas de todas as camadas devem ser retornadas. Não é compatível com modelos embrulhados pelo timm. - return_dict (
bool, opcional) — Indica se deve retornar um ModelOutput em vez de uma tupla simples. - do_pooling (
bool, opcional) — Indica se deve ser aplicado pooling aoTimmWrapperModelpara oNoneou não. SeNonefor passado, o valor dedo_poolingda configuração é utilizado. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_key_values).
Retorna
TimmWrapperModelOutput ou tuple(torch.Tensor)
Uma TimmWrapperModelOutput ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (TimmWrapperConfig) e das entradas.
O método forward do TimmWrapperModel substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
- last_hidden_state (
torch.Tensor) — O último estado oculto do modelo, gerado antes da aplicação da cabeça de classificação. - pooler_output (
torch.Tensor, opcional) — A saída agregada derivada do último estado oculto, quando aplicável. - hidden_states (
tuple(torch.Tensor), opcional, retornado seoutput_hidden_states=Trueestiver definido ou seconfig.output_hidden_states=True) — Uma tupla contendo os estados ocultos intermediários do modelo na saída de cada camada ou das camadas especificadas. - attentions (
tuple(torch.Tensor), opcional, retornado seoutput_attentions=Trueestiver definido ou seconfig.output_attentions=True.) — Uma tupla contendo os pesos de atenção intermediários do modelo na saída de cada camada. Observação: Atualmente, os modelos Timm não suportam a saída de atenções.
Exemplos:
>>> 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 de wrapper para modelos timm a serem usados em transformers para classificação de imagem.
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)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando TimmWrapperImageProcessor. Consulte TimmWrapperImageProcessor.call() para obter detalhes (processor_classusa TimmWrapperImageProcessor para processar imagens). - labels (
torch.LongTensorde forma(batch_size,), opcional) — Rótulos para o cálculo da perda de classificação/regressão de imagem. Os índices devem estar em[0, ..., config.num_labels - 1]. Seconfig.num_labels == 1, uma perda de regressão é calculada (perda de erro quadrático médio); seconfig.num_labels > 1, uma perda de classificação é calculada (entropia cruzada). - output_attentions (
bool, opcional) — Indica se os tensores de atenção de todas as camadas de atenção devem ser retornados. Não é compatível com modelos embrulhados pelo timm. - output_hidden_states (
bool, opcional) — Se as camadas ocultas de todas as camadas devem ser retornadas. Não é compatível com modelos embrulhados pelo timm. - return_dict (
bool, opcional) — Indica se deve retornar um ModelOutput em vez de uma tupla simples. **kwargs: Argumentos de palavra-chave adicionais passados ao forward do modelotimm.
Retorna
ImageClassifierOutput ou tuple(torch.Tensor)
Um ImageClassifierOutput ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (TimmWrapperConfig) e das entradas.
O método forward da TimmWrapperForImageClassification sobrescreve o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, retornado quandolabelsé fornecido) — Perda de classificação (ou regressão se config.num_labels==1).logits (
torch.Tensorde forma(batch_size, config.num_labels)) — Pontuações de classificação (ou regressão, se config.num_labels==1) (antes do SoftMax).hidden_states (
tuple(torch.Tensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada estágio) de forma(batch_size, sequence_length, hidden_size). Hidden-states (também chamados de feature maps) do modelo na saída de cada estágio.attentions (
tuple(torch.Tensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, patch_size, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
Exemplos:
>>> 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)