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 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_in1k
,model_args={"depth": 3}
用于创建具有 3 个块的模型。默认为None
。
这是用于存储 timm 主干 TimmWrapper
配置的配置类。
它用于根据指定的参数实例化 timm 模型,从而定义模型。
配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PretrainedConfig 的文档。
Config 加载 imagenet 标签描述并将其存储在 id2label
属性中,默认 imagenet 模型的 label2id
属性由于标签描述中的遮挡而设置为 None
。
TimmWrapperImageProcessor
class transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: dict architecture: typing.Optional[str] = None **kwargs )
用于在 transformers 中使用的 timm 模型的包装类。
预处理
< 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 模型的包装类。
前向传播
< source >( 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.TimmWrapperModelOutput
或 tuple(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.TimmWrapperModelOutput
或 tuple(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=True
或config.output_hidden_states=True
则返回) — 一个元组,包含模型在每个层或指定层的输出处的中间隐藏状态。 - attentions (
tuple(torch.FloatTensor)
, 可选, 如果设置了output_attentions=True
或config.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
用于图像分类的 transformers 中使用的 timm 模型的包装类。
前向传播
< source >( 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.ImageClassifierOutput 或 tuple(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.ImageClassifierOutput 或 tuple(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=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 的前向传播方法,覆盖了 __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)