Transformers 文档
TimmWrapper
并获得增强的文档体验
开始使用
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 的文档以获取更多信息。
TimmWrapperImageProcessor
class transformers.TimmWrapperImageProcessor
< 源代码 >( pretrained_cfg: dict architecture: str | None = None **kwargs )
用于在 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' )
预处理一张或一批图像。
TimmWrapperModel
用于在 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 ) → TimmWrapperModelOutput 或 tuple(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)。
返回
TimmWrapperModelOutput 或 tuple(torch.FloatTensor)
一个 TimmWrapperModelOutput 或 torch.FloatTensor 元组(如果传递了 return_dict=False 或 config.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=True或config.output_hidden_states=True时返回) — 一个包含模型在每一层或指定层输出的中间隐藏状态的元组。 - attentions (
tuple(torch.FloatTensor), 可选,在设置output_attentions=True或config.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_stateTimmWrapperForImageClassification
用于在 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 ) → ImageClassifierOutput 或 tuple(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模型前向传播的其他关键字参数。
返回
ImageClassifierOutput 或 tuple(torch.FloatTensor)
一个 ImageClassifierOutput 或 torch.FloatTensor 元组(如果传递了 return_dict=False 或 config.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)