Transformers 文档

TimmWrapper

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

TimmWrapper

PyTorch

概述

用于实现 timm 模型加载的辅助类,以便与 transformers 库及其自动类一起使用。

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

资源:

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

图像分类

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

TimmWrapperConfig

class transformers.TimmWrapperConfig

< >

( initializer_range: float = 0.02 do_pooling: bool = True model_args: typing.Optional[dict[str, typing.Any]] = None **kwargs )

参数

  • 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_in1kmodel_args={"depth": 3} 用于创建具有 3 个块的模型。默认为 None

这是用于存储 timm 主干 TimmWrapper 配置的配置类。

它用于根据指定的参数实例化 timm 模型,从而定义模型。

配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PretrainedConfig 的文档。

Config 加载 imagenet 标签描述并将其存储在 id2label 属性中,默认 imagenet 模型的 label2id 属性由于标签描述中的遮挡而设置为 None

示例

>>> 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: typing.Optional[str] = None **kwargs )

参数

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

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

预处理

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = 'pt' )

参数

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

预处理一张或一批图像。

TimmWrapperModel

class transformers.TimmWrapperModel

< >

( config: TimmWrapperConfig )

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

前向传播

< >

( pixel_values: FloatTensor output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Union[bool, list[int], NoneType] = None return_dict: typing.Optional[bool] = None do_pooling: typing.Optional[bool] = None **kwargs ) transformers.models.timm_wrapper.modeling_timm_wrapper.TimmWrapperModelOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, image_size, image_size)) — 对应于输入图像的张量。像素值可以使用 {image_processor_class} 获取。有关详细信息,请参见 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。与 timm 封装模型不兼容。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。与 timm 封装模型不兼容。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • do_pooling (bool, 可选) — 是否对 TimmWrapperModel 中的 last_hidden_state 进行池化。如果传递 None,则使用配置中的 do_pooling 值。

返回

transformers.models.timm_wrapper.modeling_timm_wrapper.TimmWrapperModelOutputtuple(torch.FloatTensor)

一个 transformers.models.timm_wrapper.modeling_timm_wrapper.TimmWrapperModelOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),包含根据配置(TimmWrapperConfig)和输入的不同元素。

  • last_hidden_state (<class 'torch.FloatTensor'>.last_hidden_state) — 模型的最后一个隐藏状态,在应用分类头之前输出。
  • 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 模型不支持注意力输出。

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

虽然前向传播的方案需要在此函数中定义,但在此之后应调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

示例

>>> 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 模型的包装类。

前向传播

< >

( pixel_values: FloatTensor labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Union[bool, list[int], NoneType] = None return_dict: typing.Optional[bool] = None **kwargs ) transformers.modeling_outputs.ImageClassifierOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, image_size, image_size)) — 对应于输入图像的张量。像素值可以使用 {image_processor_class} 获取。有关详细信息,请参见 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • labels (torch.LongTensor,形状为 (batch_size,), 可选) — 用于计算图像分类/回归损失的标签。索引应在 [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 模型前向传播的额外关键字参数。

返回

transformers.modeling_outputs.ImageClassifierOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.ImageClassifierOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),包含根据配置(TimmWrapperConfig)和输入的不同元素。

  • 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), 可选, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,+一个用于每个阶段的输出),形状为 (batch_size, sequence_length, hidden_size)。模型在每个阶段输出处的隐藏状态(也称为特征图)。

  • attentions (tuple(torch.FloatTensor), 可选, 当传递 output_attentions=Trueconfig.output_attentions=True 时返回) — torch.FloatTensor 元组(每个层一个),形状为 (batch_size, num_heads, patch_size, sequence_length)

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

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

虽然前向传播的方案需要在此函数中定义,但在此之后应调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

示例

>>> 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 上更新