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

参数

  • initializer_range (float, 可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • do_pooling (bool, 可选,默认为 True) — 是否对 TimmWrapperModel 中的 last_hidden_state 进行池化。

这是用于存储 timm backbone 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: typing.Dict[str, typing.Any] architecture: typing.Optional[str] = None **kwargs )

参数

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

timm 模型的包装类,用于 transformers 库中。

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: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = 'pt' )

参数

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

预处理图像或批量图像。

TimmWrapperModel

class transformers.TimmWrapperModel

< >

( config: TimmWrapperConfig )

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

forward

< >

( pixel_values: FloatTensor output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Union[bool, typing.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 (形状为 (batch_size, num_channels, height, width)torch.FloatTensor) — 像素值。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 TimmWrapperImageProcessor.preprocess()
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。与 timm 包装模型不兼容。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。与 timm 包装模型不兼容。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是纯元组。
  • ****kwargs — 传递给 timm 模型 forward 的其他关键字参数。
  • 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.TimmWrapperModelOutputtorch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (<class 'transformers.models.timm_wrapper.configuration_timm_wrapper.TimmWrapperConfig'>) 和输入。

  • 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 模型不支持注意力输出。

TimmWrapperModel forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 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 模型的包装类。

forward

< >

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

参数

  • pixel_values (形状为 (batch_size, num_channels, height, width)torch.FloatTensor) — 像素值。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 TimmWrapperImageProcessor.preprocess()
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。与 timm 包装模型不兼容。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。与 timm 包装模型不兼容。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是纯元组。
  • ****kwargs — 传递给 timm 模型 forward 的其他关键字参数。
  • labels (形状为 (batch_size,)torch.LongTensor, 可选) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回值

transformers.modeling_outputs.ImageClassifierOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.ImageClassifierOutputtorch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (<class 'transformers.models.timm_wrapper.configuration_timm_wrapper.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=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(模型具有嵌入层时,每个嵌入输出一个;每个阶段输出一个),形状为 (batch_size, sequence_length, hidden_size)。模型在每个阶段输出的隐藏状态(也称为特征图)。

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

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

TimmWrapperForImageClassification forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 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 上更新