Transformers 文档

Swin Transformer

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Swin Transformer

概述

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,其表示是通过 \bold{S}hifted \bold{win}dows(移位窗口)计算的。移位窗口方案通过将自注意力计算限制在非重叠的局部窗口内,同时允许跨窗口连接,从而提高了效率。这种分层架构具有在各种尺度上建模的灵活性,并且相对于图像大小具有线性计算复杂度。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 和 mask AP 分别提升了 +2.7 和 +2.6,在 ADE20K 上 mIoU 提升了 +3.2,证明了基于 Transformer 的模型作为视觉骨干网络的潜力。分层设计和移位窗口方法也被证明对全 MLP 架构有利。

Swin Transformer 架构图 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 中添加可学习的 bias。
  • 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) — layer normalization 层使用的 epsilon 值。
  • encoder_stride (int, 可选, 默认为 32) — 在掩码图像建模中,解码器头部中用于增加空间分辨率的因子。
  • out_features (List[str], optional) — 如果用作骨干网络,则输出特征列表。可以是 "stem""stage1""stage2" 等中的任何一个(取决于模型有多少个阶段)。如果未设置且设置了 out_indices,则默认为相应的阶段。如果未设置且未设置 out_indices,则默认为最后一个阶段。必须与 stage_names 属性中定义的顺序相同。
  • out_indices (List[int], optional) — 如果用作骨干网络,则输出特征的索引列表。可以是 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, optional, defaults to True) — 是否应用池化层。
  • use_mask_token (bool, optional, defaults to False) — 是否在嵌入层中创建和应用掩码标记。

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

forward

< >

( pixel_values: Optional = None bool_masked_pos: Optional = None head_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None interpolate_pos_encoding: bool = False return_dict: Optional = 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), 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) — 是否插值预训练的位置编码。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。
  • bool_masked_pos (torch.BoolTensor,形状为 (batch_size, num_patches), optional) — 布尔掩码位置。指示哪些补丁被掩码 (1) 以及哪些未被掩码 (0)。

返回值

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

一个 transformers.models.swin.modeling_swin.SwinModelOutputtorch.FloatTensor 的元组(如果传递 return_dict=False 或当 config.return_dict=False 时),其中包括取决于配置 (SwinConfig) 和输入的各种元素。

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

  • pooler_output (torch.FloatTensor,形状为 (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__ 特殊方法。

尽管前向传递的配方需要在该函数中定义,但应该在之后调用 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 中提出的那样。

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

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

forward

< >

( pixel_values: Optional = None bool_masked_pos: Optional = None head_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None interpolate_pos_encoding: bool = False return_dict: Optional = None ) transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutputtuple(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), 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) — 是否对预训练的位置编码进行插值。(bool, 可选, 默认为 False) — 是否对预训练的位置编码进行插值。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯粹的元组。(bool, 可选) — 是否返回 ModelOutput 而不是纯粹的元组。
  • bool_masked_pos (torch.BoolTensor of shape (batch_size, num_patches)) — 布尔型掩码位置。(torch.BoolTensor,形状为 (batch_size, num_patches)) — 布尔型掩码位置。指示哪些patch被掩码(1)以及哪些没有被掩码(0)。

返回值

transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutput or tuple(torch.FloatTensor)

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

  • loss (torch.FloatTensor of shape (1,), optional, returned when bool_masked_pos is provided) — 掩码图像建模 (MLM) 损失。(torch.FloatTensor,形状为 (1,)可选,当提供 bool_masked_pos 时返回) — 掩码图像建模 (MLM) 损失。

  • reconstruction (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 重建的像素值。(torch.FloatTensor,形状为 (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__ 特殊方法。

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

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: Optional = None head_mask: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None interpolate_pos_encoding: bool = False return_dict: Optional = None ) transformers.models.swin.modeling_swin.SwinImageClassifierOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 像素值。可以使用 AutoImageProcessor 获取像素值。 有关详细信息,请参见 ViTImageProcessor.call()。(torch.FloatTensor,形状为 (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。(bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的 hidden_states。(bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的 hidden_states
  • interpolate_pos_encoding (bool, optional, defaults to False) — 是否对预训练的位置编码进行插值。(bool, 可选, 默认为 False) — 是否对预训练的位置编码进行插值。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯粹的元组。(bool, 可选) — 是否返回 ModelOutput 而不是纯粹的元组。
  • labels (torch.LongTensor of shape (batch_size,), optional) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方误差损失),如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。(torch.LongTensor,形状为 (batch_size,)可选) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方误差损失),如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回值

transformers.models.swin.modeling_swin.SwinImageClassifierOutput or tuple(torch.FloatTensor)

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

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

  • logits (torch.FloatTensor of shape (batch_size, config.num_labels)) — 分类(或回归,如果 config.num_labels==1)得分(SoftMax 之前)。(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 的 forward 方法,覆盖了 __call__ 特殊方法。

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

transformers.TFSwinModel

< >

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

参数

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

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

调用

< >

( 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 of shape (batch_size, num_channels, height, width)) — 像素值。可以使用 AutoImageProcessor 获取像素值。 有关详细信息,请参见 ViTImageProcessor.call()。(tf.Tensor,形状为 (batch_size, num_channels, height, width)) — 像素值。可以使用 AutoImageProcessor 获取像素值。 有关详细信息,请参见 ViTImageProcessor.call()
  • head_mask (tf.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于置空自注意力模块中选定头的掩码。在 [0, 1] 中选择的掩码值:

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

返回值

transformers.models.swin.modeling_tf_swin.TFSwinModelOutput or tuple(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=Trueconfig.output_hidden_states=True 时返回) — tf.Tensor 元组 (每个嵌入输出 + 每个阶段的输出各一个),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

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

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

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

尽管前向传递的配方需要在该函数中定义,但应该在之后调用 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 文档了解与一般用法和行为相关的所有事项。

调用

< >

( 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,形状为 (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)) — 布尔掩码位置。指示哪些 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,形状为 (1,)可选,当提供 bool_masked_pos 时返回) — 掩码图像建模 (MLM) 损失。

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

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

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

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

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

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

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

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

尽管前向传递的配方需要在该函数中定义,但应该在之后调用 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 文档了解与一般用法和行为相关的所有事项。

调用

< >

( 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,形状为 (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 而不是普通元组。
  • labels (tf.Tensor,形状为 (batch_size,)可选) — 用于计算图像分类/回归损失的标签。索引应在 [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,形状为 (1,)可选,当提供 labels 时返回) — 分类(或回归,如果 config.num_labels==1)损失。

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

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

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

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

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

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

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

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

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