Transformers 文档

TimmWrapper

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

TimmWrapper

概述

辅助类,用于加载 timm 模型,以便在 transformers 库及其自动类(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)

资源

帮助您开始使用 TimmWrapper 的官方 Hugging Face 和社区(以 🌎 表示)资源列表。

图像分类

如需更详细的概述,请阅读有关 timm 集成的官方博客文章

TimmWrapperConfig

class transformers.TimmWrapperConfig

< >

( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = 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: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None architecture: str = 'resnet50' initializer_range: float = 0.02 do_pooling: bool = True model_args: dict[str, typing.Any] | None = None )

参数

  • architecture (str, 可选, 默认值为 "resnet50") — 要加载的 timm 架构名称。
  • initializer_range (float, 可选, 默认值为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • do_pooling (bool, 可选, 默认值为 True) — 是否在 TimmWrapperModel 中对 last_hidden_state 执行池化操作。
  • model_args (dict[str, Any], 可选) — 传递给 timm.create_model 函数的其他关键字参数。例如,对于 timm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1k,使用 model_args={"depth": 3} 来创建一个具有 3 个块的模型。默认值为 None

这是用于存储 TimmWrapperModel 配置的配置类。它用于根据指定的参数实例化 Timm Wrapper 模型,从而定义模型架构。使用默认值实例化配置将生成与 resnet50 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。

示例

>>> from transformers import TimmWrapperModel

>>> # Initializing a timm model
>>> model = TimmWrapperModel.from_pretrained("timm/resnet18.a1_in1k")

>>> # Accessing the model configuration
>>> configuration = model.config

TimmWrapperImageProcessor

class transformers.TimmWrapperImageProcessor

< >

( pretrained_cfg: dict architecture: str | None = None **kwargs )

参数

  • pretrained_cfg (dict[str, Any]) — 用于解析评估和训练变换的预训练模型配置。
  • architecture (Optional[str], 可选) — 模型架构名称。

用于在 transformers 中使用的 timm 模型包装类。

preprocess

< >

( 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' )

参数

  • images (ImageInput) — 待预处理的图像。支持单张图像或图像批次。
  • return_tensors (strTensorType, 可选) — 要返回的张量类型。

预处理一张或一批图像。

TimmWrapperModel

class transformers.TimmWrapperModel

< >

( config: TimmWrapperConfig )

用于在 transformers 中使用的 timm 模型包装类。

forward

< >

( pixel_values: FloatTensor output_attentions: bool | None = None output_hidden_states: bool | list[int] | None = None return_dict: bool | None = None do_pooling: bool | None = None use_cache: bool | None = None **kwargs ) TimmWrapperModelOutputtuple(torch.FloatTensor)

参数

  • pixel_values (形状为 (batch_size, num_channels, image_size, image_size)torch.FloatTensor) — 输入图像对应的张量。可以使用 TimmWrapperImageProcessor 获取像素值。有关详细信息,请参阅 TimmWrapperImageProcessor.__call__()processor_class 使用 TimmWrapperImageProcessor 进行图像处理)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。不兼容 timm 包装模型。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。不兼容 timm 包装模型。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通的元组。
  • do_pooling (bool, 可选) — 是否在 TimmWrapperModel 中对 last_hidden_state 执行池化操作。如果传入 None,将使用配置中的 do_pooling 值。
  • use_cache (bool, 可选) — 如果设置为 True,将返回 past_key_values 键值状态,并可用于加速解码(参见 past_key_values)。

返回

TimmWrapperModelOutputtuple(torch.FloatTensor)

一个 TimmWrapperModelOutputtorch.FloatTensor 元组(如果传递了 return_dict=Falseconfig.return_dict=False),具体取决于配置(TimmWrapperConfig)和输入,包含各种元素。

TimmWrapperModel 的前向传播方法,覆盖了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

  • last_hidden_state (torch.FloatTensor) — 模型的最后隐藏状态,在应用分类头之前输出。
  • pooler_output (torch.FloatTensor, 可选) — 从最后隐藏状态导出的池化输出(如果适用)。
  • hidden_states (tuple(torch.FloatTensor), 可选,在设置 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 一个包含模型在每一层或指定层输出的中间隐藏状态的元组。
  • attentions (tuple(torch.FloatTensor), 可选,在设置 output_attentions=Trueconfig.output_attentions=True 时返回。) — 一个包含模型在每一层输出的中间注意力权重的元组。注意:目前 Timm 模型不支持输出注意力。

示例

>>> 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_state

TimmWrapperForImageClassification

class transformers.TimmWrapperForImageClassification

< >

( config: TimmWrapperConfig )

用于在 transformers 中进行图像分类的 timm 模型包装类。

forward

< >

( pixel_values: FloatTensor labels: torch.LongTensor | None = None output_attentions: bool | None = None output_hidden_states: bool | list[int] | None = None return_dict: bool | None = None **kwargs ) ImageClassifierOutputtuple(torch.FloatTensor)

参数

  • pixel_values (形状为 (batch_size, num_channels, image_size, image_size)torch.FloatTensor) — 输入图像对应的张量。可以使用 TimmWrapperImageProcessor 获取像素值。有关详细信息,请参阅 TimmWrapperImageProcessor.__call__()processor_class 使用 TimmWrapperImageProcessor 进行图像处理)。
  • labels (形状为 (batch_size,)torch.LongTensor, 可选) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方误差损失);如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。不兼容 timm 包装模型。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。不兼容 timm 包装模型。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通的元组。**kwargs:传递给 timm 模型前向传播的其他关键字参数。

返回

ImageClassifierOutputtuple(torch.FloatTensor)

一个 ImageClassifierOutputtorch.FloatTensor 元组(如果传递了 return_dict=Falseconfig.return_dict=False),具体取决于配置(TimmWrapperConfig)和输入,包含各种元素。

TimmWrapperForImageClassification 的前向传播方法,覆盖了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。

  • logits (形状为 (batch_size, config.num_labels)torch.FloatTensor) — 分类(如果 config.num_labels==1,则为回归)分数(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传入 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 每个阶段的输出)。模型在每个阶段输出的隐藏状态(也称为特征图)。

  • attentions (tuple(torch.FloatTensor), optional, 当传入 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, patch_size, sequence_length)torch.FloatTensor 元组(每个层一个)。

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

示例

>>> 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)
在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.