Transformers 文档
TimmWrapper
并获得增强的文档体验
开始使用
TimmWrapper
概述
帮助类,用于加载 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
< source >( initializer_range: float = 0.02 do_pooling: bool = True **kwargs )
这是用于存储 timm backbone TimmWrapper
的配置类。
它用于根据指定的参数实例化 timm 模型,定义模型。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 中的文档以获取更多信息。
Config 加载 imagenet 标签描述,并将它们存储在 id2label
属性中,由于标签描述中的遮挡,默认 imagenet 模型的 label2id
属性设置为 None
。
TimmWrapperImageProcessor
class transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: typing.Dict[str, typing.Any] architecture: typing.Optional[str] = None **kwargs )
timm 模型的包装类,用于 transformers 库中。
preprocess
< 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: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = 'pt' )
预处理图像或批量图像。
TimmWrapperModel
用于 transformers 中 timm 模型的包装类。
forward
< source >( 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.TimmWrapperModelOutput
或 tuple(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.TimmWrapperModelOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.timm_wrapper.modeling_timm_wrapper.TimmWrapperModelOutput
或 torch.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=True
或config.output_hidden_states=True
,则返回。 - attentions (
tuple(torch.FloatTensor)
, 可选) — 一个元组,其中包含模型在每一层输出处的中间注意力权重。如果设置了output_attentions=True
或config.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
用于 transformers 中图像分类的 timm 模型的包装类。
forward
< source >( 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.ImageClassifierOutput 或 tuple(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.ImageClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.ImageClassifierOutput 或 torch.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)