Transformers 文档

Swin Transformer

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Swin Transformer

PyTorch TensorFlow

概述

Swin Transformer 是 Ze Liu、Yutong Lin、Yue Cao、Han Hu、Yixuan Wei、Zheng Zhang、Stephen Lin 和 Baining Guo 在 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 中提出的。

以下是论文的摘要

本文介绍了一种新的视觉 Transformer,名为 Swin Transformer,它可以作为计算机视觉的通用骨干网络。将 Transformer 从语言领域适配到视觉领域所面临的挑战,源于两个领域之间的差异,例如视觉实体尺度的巨大差异以及图像中像素的高分辨率(与文本中的单词相比)。为了解决这些差异,我们提出了一种分层 Transformer,其表示是通过移位窗口计算的。移位窗口方案通过将自注意力计算限制在非重叠的局部窗口中,同时允许跨窗口连接,从而提高了效率。这种分层架构具有在各种尺度上建模的灵活性,并且相对于图像大小具有线性计算复杂度。Swin Transformer 的这些特性使其与广泛的视觉任务兼容,包括图像分类(在 ImageNet-1K 上达到 87.3% 的 top-1 准确率)和密集预测任务,例如对象检测(在 COCO test-dev 上达到 58.7 box AP 和 51.1 mask AP)和语义分割(在 ADE20K val 上达到 53.5 mIoU)。其性能大幅超越了之前的最先进水平,在 COCO 上 box AP 提升 +2.7,mask AP 提升 +2.6,在 ADE20K 上 mIoU 提升 +3.2,证明了基于 Transformer 的模型作为视觉骨干网络的潜力。分层设计和移位窗口方法也被证明对所有 MLP 架构都有益。

drawing Swin Transformer 架构。摘自原始论文

此模型由 novice03 贡献。此模型的 Tensorflow 版本由 amyeroberts 贡献。原始代码可以在这里找到。

使用技巧

  • Swin 会填充输入,支持任何输入高度和宽度(如果可被 32 整除)。
  • Swin 可以用作骨干网络。当 output_hidden_states = True 时,它将输出 hidden_statesreshaped_hidden_statesreshaped_hidden_states 的形状为 (batch, num_channels, height, width),而不是 (batch_size, sequence_length, num_channels)

资源

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

图像分类

除此之外

如果您有兴趣提交资源以包含在此处,请随时打开 Pull Request,我们将对其进行审核!该资源最好能展示一些新的东西,而不是重复现有的资源。

SwinConfig

class transformers.SwinConfig

< >

( image_size = 224 patch_size = 4 num_channels = 3 embed_dim = 96 depths = [2, 2, 6, 2] num_heads = [3, 6, 12, 24] window_size = 7 mlp_ratio = 4.0 qkv_bias = True hidden_dropout_prob = 0.0 attention_probs_dropout_prob = 0.0 drop_path_rate = 0.1 hidden_act = 'gelu' use_absolute_embeddings = False initializer_range = 0.02 layer_norm_eps = 1e-05 encoder_stride = 32 out_features = None out_indices = None **kwargs )

参数

  • image_size (int, 可选, 默认为 224) — 每个图像的大小(分辨率)。
  • patch_size (int, 可选, 默认为 4) — 每个patch的大小(分辨率)。
  • num_channels (int, 可选, 默认为 3) — 输入通道数。
  • embed_dim (int, 可选, 默认为 96) — patch 嵌入的维度。
  • depths (list(int), 可选, 默认为 [2, 2, 6, 2]) — Transformer 编码器中每层的深度。
  • num_heads (list(int), 可选, 默认为 [3, 6, 12, 24]) — Transformer 编码器每层中的注意力头数。
  • window_size (int, 可选, 默认为 7) — 窗口大小。
  • mlp_ratio (float, 可选, 默认为 4.0) — MLP 隐藏层维度与嵌入层维度的比率。
  • qkv_bias (bool, 可选, 默认为 True) — 是否将可学习的偏置添加到 queries、keys 和 values 中。
  • hidden_dropout_prob (float, 可选, 默认为 0.0) — 嵌入层和编码器中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (float, 可选, 默认为 0.0) — 注意力概率的 dropout 比率。
  • drop_path_rate (float, 可选, 默认为 0.1) — 随机深度比率。
  • hidden_act (strfunction, 可选, 默认为 "gelu") — 编码器中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""selu""gelu_new"
  • use_absolute_embeddings (bool, 可选, 默认为 False) — 是否将绝对位置嵌入添加到 patch 嵌入中。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-05) — 层归一化层使用的 epsilon 值。
  • encoder_stride (int, 可选, 默认为 32) — 在用于掩码图像建模的解码器头中,增加空间分辨率的因子。
  • out_features (List[str], 可选) — 如果用作骨干网络,则输出的特征列表。可以是 "stem""stage1""stage2" 等中的任何一个(取决于模型有多少个阶段)。如果未设置且设置了 out_indices,则默认为相应的阶段。如果未设置且 out_indices 也未设置,则默认为最后一个阶段。必须与 stage_names 属性中定义的顺序相同。
  • out_indices (List[int], 可选) — 如果用作骨干网络,则输出的特征索引列表。可以是 0、1、2 等中的任何一个(取决于模型有多少个阶段)。如果未设置且设置了 out_features,则默认为相应的阶段。如果未设置且 out_features 也未设置,则默认为最后一个阶段。必须与 stage_names 属性中定义的顺序相同。

这是用于存储 SwinModel 配置的配置类。它用于根据指定的参数实例化 Swin 模型,定义模型架构。使用默认值实例化配置将产生与 Swin microsoft/swin-tiny-patch4-window7-224 架构相似的配置。

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

示例

>>> from transformers import SwinConfig, SwinModel

>>> # Initializing a Swin microsoft/swin-tiny-patch4-window7-224 style configuration
>>> configuration = SwinConfig()

>>> # Initializing a model (with random weights) from the microsoft/swin-tiny-patch4-window7-224 style configuration
>>> model = SwinModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
Pytorch
隐藏 Pytorch 内容

SwinModel

class transformers.SwinModel

< >

( config add_pooling_layer = True use_mask_token = False )

参数

  • config (SwinConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
  • add_pooling_layer (bool, 可选, 默认为 True) — 是否应用池化层。
  • use_mask_token (bool, 可选, 默认为 False) — 是否在嵌入层中创建和应用掩码 tokens。

裸 Swin Model Transformer 输出原始隐藏状态,顶部没有任何特定的头部。此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以了解与通用用法和行为相关的所有事项。

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None bool_masked_pos: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) transformers.models.swin.modeling_swin.SwinModelOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 ViTImageProcessor.call()
  • head_mask (torch.FloatTensor,形状为 (num_heads,)(num_layers, num_heads), 可选) — 用于置空自注意力模块中选定头的掩码。在 [0, 1] 中选择的掩码值:

    • 1 表示头未被掩码
    • 0 表示头已被掩码
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 详见返回张量下的 hidden_states
  • interpolate_pos_encoding (bool, optional, defaults to False) — 是否对预训练的位置编码进行插值。默认为 False
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • bool_masked_pos (torch.BoolTensor of shape (batch_size, num_patches), optional) — 布尔掩码位置。指示哪些patch被掩码 (1) 以及哪些没有 (0)。

返回:

transformers.models.swin.modeling_swin.SwinModelOutputtuple(torch.FloatTensor)

一个 transformers.models.swin.modeling_swin.SwinModelOutput 或一个 torch.FloatTensor 元组 (如果传递 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (SwinConfig) 和输入。

  • last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)) — 模型最后一层的输出处的隐藏状态序列。

  • pooler_output (torch.FloatTensor of shape (batch_size, hidden_size), optional, 当传递 add_pooling_layer=True 时返回) — 最后一层隐藏状态的平均池化。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组 (每个嵌入输出 + 每个阶段的输出各一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出以及初始嵌入输出处的隐藏状态。

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

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

  • reshaped_hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组 (每个嵌入输出 + 每个阶段的输出各一个),形状为 (batch_size, hidden_size, height, width)

    模型在每一层输出以及初始嵌入输出处的隐藏状态,并重塑以包含空间维度。

SwinModel 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoImageProcessor, SwinModel
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image", trust_remote_code=True)
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")
>>> model = SwinModel.from_pretrained("microsoft/swin-tiny-patch4-window7-224")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 49, 768]

SwinForMaskedImageModeling

class transformers.SwinForMaskedImageModeling

< >

( config )

参数

  • config (SwinConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。

用于掩码图像建模的 Swin 模型,顶部带有解码器,正如 SimMIM 中提出的那样。

请注意,我们在 examples directory 中提供了一个脚本,用于在自定义数据上预训练此模型。

此模型是 PyTorch torch.nn.Module 子类。 将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以了解所有与常规用法和行为相关的事项。

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None bool_masked_pos: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 像素值。 像素值可以使用 AutoImageProcessor 获得。 有关详细信息,请参阅 ViTImageProcessor.call()
  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使自注意力模块的选定头无效的掩码。 在 [0, 1] 中选择的掩码值:

    • 1 表示头未被掩码
    • 0 表示头被掩码
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。 详见返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 详见返回张量下的 hidden_states
  • interpolate_pos_encoding (bool, optional, defaults to False) — 是否对预训练的位置编码进行插值。默认为 False
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • bool_masked_pos (torch.BoolTensor of shape (batch_size, num_patches)) — 布尔掩码位置。指示哪些patch被掩码 (1) 以及哪些没有 (0)。

返回:

transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutputtuple(torch.FloatTensor)

一个 transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutput 或一个 torch.FloatTensor 元组 (如果传递 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (SwinConfig) 和输入。

  • loss (torch.FloatTensor of shape (1,), optional, 当提供 bool_masked_pos 时返回) — 掩码图像建模 (MLM) 损失。

  • reconstruction (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 重建的像素值。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组 (每个嵌入输出 + 每个阶段的输出各一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出以及初始嵌入输出处的隐藏状态。

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

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

  • reshaped_hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组 (每个嵌入输出 + 每个阶段的输出各一个),形状为 (batch_size, hidden_size, height, width)

    模型在每一层输出以及初始嵌入输出处的隐藏状态,并重塑以包含空间维度。

SwinForMaskedImageModeling 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoImageProcessor, SwinForMaskedImageModeling
>>> import torch
>>> from PIL import Image
>>> import requests

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-base-simmim-window6-192")
>>> model = SwinForMaskedImageModeling.from_pretrained("microsoft/swin-base-simmim-window6-192")

>>> num_patches = (model.config.image_size // model.config.patch_size) ** 2
>>> pixel_values = image_processor(images=image, return_tensors="pt").pixel_values
>>> # create random boolean mask of shape (batch_size, num_patches)
>>> bool_masked_pos = torch.randint(low=0, high=2, size=(1, num_patches)).bool()

>>> outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
>>> loss, reconstructed_pixel_values = outputs.loss, outputs.reconstruction
>>> list(reconstructed_pixel_values.shape)
[1, 3, 192, 192]

SwinForImageClassification

class transformers.SwinForImageClassification

< >

( config )

参数

  • config (SwinConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。

Swin 模型转换器,顶部带有图像分类头 (位于 [CLS] 标记的最终隐藏状态顶部的线性层),例如用于 ImageNet。

请注意,通过在模型的前向传播中将 interpolate_pos_encoding 设置为 True,可以在比 Swin 训练时更高分辨率的图像上微调 Swin。 这会将预训练的位置嵌入插值到更高的分辨率。

此模型是 PyTorch torch.nn.Module 子类。 将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以了解所有与常规用法和行为相关的事项。

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) transformers.models.swin.modeling_swin.SwinImageClassifierOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 像素值。 像素值可以使用 AutoImageProcessor 获得。 有关详细信息,请参阅 ViTImageProcessor.call()
  • head_mask (torch.FloatTensor, 形状为 (num_heads,)(num_layers, num_heads), 可选) — 用于屏蔽自注意力模块中选定头的掩码。 掩码值在 [0, 1] 中选择:

    • 1 表示头未被屏蔽
    • 0 表示头被屏蔽
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • interpolate_pos_encoding (bool, 可选, 默认为 False) — 是否插值预训练的位置编码。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是纯元组。
  • labels (torch.LongTensor, 形状为 (batch_size,), 可选) — 用于计算图像分类/回归损失的标签。 索引应在 [0, ..., config.num_labels - 1] 中。 如果 config.num_labels == 1,则计算回归损失(均方损失)。 如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回:

transformers.models.swin.modeling_swin.SwinImageClassifierOutputtuple(torch.FloatTensor)

一个 transformers.models.swin.modeling_swin.SwinImageClassifierOutputtorch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (SwinConfig) 和输入。

  • loss (torch.FloatTensor, 形状为 (1,), 可选, 当提供 labels 时返回) — 分类(或回归,如果 config.num_labels==1)损失。

  • logits (torch.FloatTensor, 形状为 (batch_size, config.num_labels)) — 分类(或回归,如果 config.num_labels==1)得分(在 SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组 (每个嵌入输出 + 每个阶段的输出各一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出以及初始嵌入输出处的隐藏状态。

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

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

  • reshaped_hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组 (每个嵌入输出 + 每个阶段的输出各一个),形状为 (batch_size, hidden_size, height, width)

    模型在每一层输出以及初始嵌入输出处的隐藏状态,并重塑以包含空间维度。

SwinForImageClassification 前向方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoImageProcessor, SwinForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image", trust_remote_code=True)
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")
>>> model = SwinForImageClassification.from_pretrained("microsoft/swin-tiny-patch4-window7-224")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
tabby, tabby cat
TensorFlow
隐藏 TensorFlow 内容

TFSwinModel

class transformers.TFSwinModel

< >

( config: SwinConfig add_pooling_layer: bool = True use_mask_token: bool = False **kwargs )

参数

  • config (SwinConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。

裸 Swin 模型 Transformer,输出原始隐藏状态,顶部没有任何特定的头。 此模型是 Tensorflow keras.layers.Layer 子类。 将其用作常规 Tensorflow 模块,并参阅 Tensorflow 文档以获取与常规用法和行为相关的所有事项。

call

< >

( pixel_values: tf.Tensor | None = None bool_masked_pos: tf.Tensor | None = None head_mask: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.models.swin.modeling_tf_swin.TFSwinModelOutputtuple(tf.Tensor)

参数

  • pixel_values (tf.Tensor, 形状为 (batch_size, num_channels, height, width)) — 像素值。 像素值可以使用 AutoImageProcessor 获得。 有关详细信息,请参阅 ViTImageProcessor.call()
  • head_mask (tf.Tensor, 形状为 (num_heads,)(num_layers, num_heads), 可选) — 用于屏蔽自注意力模块中选定头的掩码。 掩码值在 [0, 1] 中选择:

    • 1 表示头未被屏蔽
    • 0 表示头被屏蔽
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是纯元组。
  • bool_masked_pos (tf.Tensor, 形状为 (batch_size, num_patches), 可选) — 布尔掩码位置。 指示哪些补丁被掩码 (1) 以及哪些未被掩码 (0)。

返回:

transformers.models.swin.modeling_tf_swin.TFSwinModelOutputtuple(tf.Tensor)

一个 transformers.models.swin.modeling_tf_swin.TFSwinModelOutputtf.Tensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (SwinConfig) 和输入。

  • last_hidden_state (tf.Tensor, 形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层的输出处的隐藏状态序列。

  • pooler_output (tf.Tensor, 形状为 (batch_size, hidden_size), 可选, 当传递 add_pooling_layer=True 时返回) — 最后一层隐藏状态的平均池化。

  • hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — tf.Tensor 元组(每个嵌入输出一个 + 每个阶段输出一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出以及初始嵌入输出处的隐藏状态。

  • attentions (tuple(tf.Tensor), 可选, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — tf.Tensor 元组(每个阶段一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • reshaped_hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — tf.Tensor 元组(每个嵌入输出一个 + 每个阶段输出一个),形状为 (batch_size, hidden_size, height, width)

    模型在每一层输出以及初始嵌入输出处的隐藏状态,并重塑以包含空间维度。

TFSwinModel 前向方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoImageProcessor, TFSwinModel
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image", trust_remote_code=True)
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")
>>> model = TFSwinModel.from_pretrained("microsoft/swin-tiny-patch4-window7-224")

>>> inputs = image_processor(image, return_tensors="tf")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 49, 768]

TFSwinForMaskedImageModeling

class transformers.TFSwinForMaskedImageModeling

< >

( config: SwinConfig )

参数

  • config (SwinConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。

带有用于掩码图像建模的解码器的 Swin 模型,如 SimMIM 中提出的。 此模型是 Tensorflow keras.layers.Layer 子类。 将其用作常规 Tensorflow 模块,并参阅 Tensorflow 文档以获取与常规用法和行为相关的所有事项。

call

< >

( pixel_values: tf.Tensor | None = None bool_masked_pos: tf.Tensor | None = None head_mask: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.models.swin.modeling_tf_swin.TFSwinMaskedImageModelingOutputtuple(tf.Tensor)

参数

  • pixel_values (tf.Tensor of shape (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获得。 有关详细信息,请参阅 ViTImageProcessor.call()
  • head_mask (tf.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于置空自注意力模块中选定 head 的掩码。掩码值选定在 [0, 1] 中:

    • 1 表示 head 不被掩蔽
    • 0 表示 head 被掩蔽
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • bool_masked_pos (tf.Tensor of shape (batch_size, num_patches)) — 布尔掩码位置。指示哪些 patch 被掩蔽 (1) 以及哪些没有 (0)。

返回:

transformers.models.swin.modeling_tf_swin.TFSwinMaskedImageModelingOutputtuple(tf.Tensor)

一个 transformers.models.swin.modeling_tf_swin.TFSwinMaskedImageModelingOutputtf.Tensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含取决于配置 (SwinConfig) 和输入的各种元素。

  • loss (tf.Tensor of shape (1,), optional, 当提供 bool_masked_pos 时返回) — 掩码图像建模 (MLM) 损失。

  • reconstruction (tf.Tensor of shape (batch_size, num_channels, height, width)) — 重建的像素值。

  • hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — tf.Tensor 元组(每个嵌入输出一个 + 每个阶段输出一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出以及初始嵌入输出处的隐藏状态。

  • attentions (tuple(tf.Tensor), 可选, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — tf.Tensor 元组(每个阶段一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • reshaped_hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — tf.Tensor 元组(每个嵌入输出一个 + 每个阶段输出一个),形状为 (batch_size, hidden_size, height, width)

    模型在每一层输出以及初始嵌入输出处的隐藏状态,并重塑以包含空间维度。

TFSwinForMaskedImageModeling 前向方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoImageProcessor, TFSwinForMaskedImageModeling
>>> import tensorflow as tf
>>> from PIL import Image
>>> import requests

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")
>>> model = TFSwinForMaskedImageModeling.from_pretrained("microsoft/swin-tiny-patch4-window7-224")

>>> num_patches = (model.config.image_size // model.config.patch_size) ** 2
>>> pixel_values = image_processor(images=image, return_tensors="tf").pixel_values
>>> # create random boolean mask of shape (batch_size, num_patches)
>>> bool_masked_pos = tf.random.uniform((1, num_patches)) >= 0.5

>>> outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
>>> loss, reconstructed_pixel_values = outputs.loss, outputs.reconstruction
>>> list(reconstructed_pixel_values.shape)
[1, 3, 224, 224]

TFSwinForImageClassification

class transformers.TFSwinForImageClassification

< >

( config: SwinConfig )

参数

  • config (SwinConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法以加载模型权重。

Swin 模型转换器,顶部带有图像分类头 (位于 [CLS] 标记的最终隐藏状态顶部的线性层),例如用于 ImageNet。

此模型是 Tensorflow keras.layers.Layer 子类。 将其用作常规 Tensorflow 模块,并查阅 Tensorflow 文档以获取与常规用法和行为相关的所有事项。

call

< >

( pixel_values: tf.Tensor | None = None head_mask: tf.Tensor | None = None labels: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.models.swin.modeling_tf_swin.TFSwinImageClassifierOutputtuple(tf.Tensor)

参数

  • pixel_values (tf.Tensor of shape (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获得。 有关详细信息,请参阅 ViTImageProcessor.call()
  • head_mask (tf.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于置空自注意力模块中选定 head 的掩码。掩码值选定在 [0, 1] 中:

    • 1 表示 head 不被掩蔽
    • 0 表示 head 被掩蔽
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • labels (tf.Tensor of shape (batch_size,), optional) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方误差损失),如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回:

transformers.models.swin.modeling_tf_swin.TFSwinImageClassifierOutputtuple(tf.Tensor)

一个 transformers.models.swin.modeling_tf_swin.TFSwinImageClassifierOutputtf.Tensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含取决于配置 (SwinConfig) 和输入的各种元素。

  • loss (tf.Tensor of shape (1,), optional, 当提供 labels 时返回) — 分类(或回归,如果 config.num_labels==1)损失。

  • logits (tf.Tensor of shape (batch_size, config.num_labels)) — 分类(或回归,如果 config.num_labels==1)分数(在 SoftMax 之前)。

  • hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — tf.Tensor 元组(每个嵌入输出一个 + 每个阶段输出一个),形状为 (batch_size, sequence_length, hidden_size)

    模型在每一层输出以及初始嵌入输出处的隐藏状态。

  • attentions (tuple(tf.Tensor), 可选, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — tf.Tensor 元组(每个阶段一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

  • reshaped_hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — tf.Tensor 元组(每个嵌入输出一个 + 每个阶段输出一个),形状为 (batch_size, hidden_size, height, width)

    模型在每一层输出以及初始嵌入输出处的隐藏状态,并重塑以包含空间维度。

TFSwinForImageClassification 前向方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoImageProcessor, TFSwinForImageClassification
>>> import tensorflow as tf
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image", trust_remote_code=True)
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")
>>> model = TFSwinForImageClassification.from_pretrained("microsoft/swin-tiny-patch4-window7-224")

>>> inputs = image_processor(image, return_tensors="tf")
>>> logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = int(tf.math.argmax(logits, axis=-1))
>>> print(model.config.id2label[predicted_label])
tabby, tabby cat
< > Update on GitHub