Transformers 文档

视觉变换器掩码自编码器

ViTMAE

概述

ViTMAE模型由Kaiming He、Xinlei Chen、Saining Xie、Yanghao Li、Piotr Dollár和Ross Girshick在Masked Autoencoders Are Scalable Vision Learners中提出。论文表明,通过预训练Vision Transformer(ViT)来重建被遮蔽的像素值,可以在微调后获得优于监督预训练的结果。

论文的摘要如下:

本文展示了掩码自编码器(MAE)是计算机视觉中可扩展的自监督学习器。我们的MAE方法很简单:我们掩码输入图像的随机补丁并重建缺失的像素。它基于两个核心设计。首先,我们开发了一种非对称的编码器-解码器架构,其中编码器仅对可见的补丁子集进行操作(没有掩码标记),以及一个轻量级的解码器,从潜在表示和掩码标记重建原始图像。其次,我们发现掩码输入图像的高比例,例如75%,会产生一个非平凡且有意义的自监督任务。结合这两种设计使我们能够高效且有效地训练大型模型:我们加速了训练(3倍或更多)并提高了准确性。我们的可扩展方法允许学习具有良好泛化能力的高容量模型:例如,一个普通的ViT-Huge模型在使用仅ImageNet-1K数据的方法中达到了最佳准确性(87.8%)。在下游任务中的迁移性能优于监督预训练,并显示出有希望的扩展行为。

drawing MAE architecture. Taken from the original paper.

该模型由nielsr贡献。模型的TensorFlow版本由sayakpaulariG23498(同等贡献)贡献。原始代码可以在这里找到。

使用提示

  • MAE(掩码自编码)是一种用于视觉变换器(ViTs)自监督预训练的方法。预训练目标相对简单:通过掩盖大部分(75%)图像块,模型必须重建原始像素值。可以使用ViTMAEForPreTraining来实现这一目的。
  • 在预训练之后,人们“丢弃”用于重建像素的解码器,并使用编码器进行微调/线性探测。这意味着在微调之后,可以直接将权重插入到ViTForImageClassification中。
  • 可以使用ViTImageProcessor来为模型准备图像。有关更多信息,请参阅代码示例。
  • 请注意,MAE的编码器仅用于编码视觉补丁。编码后的补丁随后与掩码标记连接,解码器(也由Transformer块组成)将其作为输入。每个掩码标记是一个共享的、学习的向量,表示要预测的缺失补丁的存在。固定的正弦/余弦位置嵌入被添加到编码器和解码器的输入中。
  • 要直观地理解MAE的工作原理,您可以查看这篇文章

使用缩放点积注意力 (SDPA)

PyTorch 包含一个原生的缩放点积注意力(SDPA)操作符,作为 torch.nn.functional 的一部分。这个函数 包含了几种实现,可以根据输入和使用的硬件进行应用。更多信息请参阅 官方文档GPU 推理 页面。

默认情况下,当有可用实现时,SDPA 用于 torch>=2.1.1,但你也可以在 from_pretrained() 中设置 attn_implementation="sdpa" 来明确请求使用 SDPA。

from transformers import ViTMAEModel
model = ViTMAEModel.from_pretrained("facebook/vit-mae-base", attn_implementation="sdpa", torch_dtype=torch.float16)
...

为了获得最佳加速效果,我们建议以半精度加载模型(例如 torch.float16torch.bfloat16)。

在本地基准测试(A100-40GB,PyTorch 2.3.0,操作系统 Ubuntu 22.04)中,使用float32facebook/vit-mae-base模型,我们在推理过程中看到了以下加速效果。

批量大小 平均推理时间(毫秒),eager模式 平均推理时间(毫秒),sdpa模型 加速比,Sdpa / Eager(倍)
1 11 6 1.83
2 8 6 1.33
4 8 6 1.33
8 8 6 1.33

资源

以下是官方Hugging Face和社区(由🌎表示)提供的资源列表,帮助您开始使用ViTMAE。

如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将进行审核!理想情况下,资源应展示一些新内容,而不是重复现有资源。

ViTMAEConfig

class transformers.ViTMAEConfig

< >

( hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.0 attention_probs_dropout_prob = 0.0 initializer_range = 0.02 layer_norm_eps = 1e-12 image_size = 224 patch_size = 16 num_channels = 3 qkv_bias = True decoder_num_attention_heads = 16 decoder_hidden_size = 512 decoder_num_hidden_layers = 8 decoder_intermediate_size = 2048 mask_ratio = 0.75 norm_pix_loss = False **kwargs )

参数

  • hidden_size (int, optional, defaults to 768) — 编码器层和池化层的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。
  • num_attention_heads (int, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。
  • intermediate_size (int, optional, 默认为 3072) — Transformer 编码器中“中间”(即前馈)层的维度。
  • hidden_act (strfunction, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持 "gelu""relu""selu""gelu_new"
  • hidden_dropout_prob (float, optional, 默认为 0.0) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (float, optional, defaults to 0.0) — 注意力概率的丢弃比率。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, optional, 默认为 1e-12) — 层归一化层使用的 epsilon 值。
  • image_size (int, optional, 默认为 224) — 每张图片的大小(分辨率)。
  • patch_size (int, optional, defaults to 16) — 每个补丁的大小(分辨率)。
  • num_channels (int, optional, defaults to 3) — 输入通道的数量。
  • qkv_bias (bool, optional, defaults to True) — 是否在查询、键和值中添加偏置。
  • decoder_num_attention_heads (int, optional, defaults to 16) — 解码器中每个注意力层的注意力头数。
  • decoder_hidden_size (int, optional, defaults to 512) — 解码器的维度。
  • decoder_num_hidden_layers (int, optional, 默认为 8) — 解码器中的隐藏层数。
  • decoder_intermediate_size (int, optional, defaults to 2048) — 解码器中“中间”(即前馈)层的维度。
  • mask_ratio (float, optional, defaults to 0.75) — 输入序列中被掩码标记的数量的比例。
  • norm_pix_loss (bool, 可选, 默认为 False) — 是否使用归一化像素进行训练(参见论文中的表3)。在作者的实验中,使用归一化像素提高了表示质量。

这是用于存储ViTMAEModel配置的配置类。它用于根据指定的参数实例化一个ViT MAE模型,定义模型架构。使用默认值实例化配置将产生类似于ViT facebook/vit-mae-base架构的配置。

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

示例:

>>> from transformers import ViTMAEConfig, ViTMAEModel

>>> # Initializing a ViT MAE vit-mae-base style configuration
>>> configuration = ViTMAEConfig()

>>> # Initializing a model (with random weights) from the vit-mae-base style configuration
>>> model = ViTMAEModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
Pytorch
Hide Pytorch content

ViTMAEModel

transformers.ViTMAEModel

< >

( config )

参数

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

裸的ViTMAE模型转换器输出原始隐藏状态,没有任何特定的头部。 此模型是PyTorch torch.nn.Module 的子类。将其 用作常规的PyTorch模块,并参考PyTorch文档以获取与一般使用和行为相关的所有事项。

前进

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None noise: typing.Optional[torch.FloatTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None interpolate_pos_encoding: bool = False ) transformers.models.vit_mae.modeling_vit_mae.ViTMAEModelOutputtuple(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
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。
  • interpolate_pos_encoding (bool, optional, default False) — 是否插值预训练的位置编码。这主要用于在更高分辨率的图像上使用模型。

返回

transformers.models.vit_mae.modeling_vit_mae.ViTMAEModelOutputtuple(torch.FloatTensor)

一个 transformers.models.vit_mae.modeling_vit_mae.ViTMAEModelOutput 或者一个由 torch.FloatTensor 组成的元组(如果传递了 return_dict=False 或者当 config.return_dict=False 时),包含各种 元素,具体取决于配置(ViTMAEConfig)和输入。

  • last_hidden_state (torch.FloatTensor 形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。
  • mask (torch.FloatTensor 形状为 (batch_size, sequence_length)) — 指示哪些补丁被掩码(1)和哪些没有被掩码(0)的张量。
  • ids_restore (torch.LongTensor 形状为 (batch_size, sequence_length)) — 包含(打乱的)掩码补丁的原始索引的张量。
  • 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, sequence_length, sequence_length)。注意力权重在注意力 softmax 之后,用于计算 自注意力头中的加权平均值。

ViTMAEModel 的前向方法,重写了 __call__ 特殊方法。

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

示例:

>>> from transformers import AutoImageProcessor, ViTMAEModel
>>> 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("facebook/vit-mae-base")
>>> model = ViTMAEModel.from_pretrained("facebook/vit-mae-base")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

ViTMAEForPreTraining

transformers.ViTMAEForPreTraining

< >

( config )

参数

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

ViTMAE模型转换器,顶部带有解码器,用于自监督预训练。

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

该模型是一个PyTorch torch.nn.Module 子类。将其用作常规的PyTorch模块,并参考PyTorch文档以获取与一般使用和行为相关的所有信息。

前进

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None noise: typing.Optional[torch.FloatTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None interpolate_pos_encoding: bool = False ) transformers.models.vit_mae.modeling_vit_mae.ViTMAEForPreTrainingOutputtuple(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
  • return_dict (bool, 可选) — 是否返回一个ModelOutput而不是一个普通的元组。
  • interpolate_pos_encoding (bool, optional, default False) — 是否插值预训练的位置编码。这主要用于在更高分辨率的图像上使用模型。

返回

transformers.models.vit_mae.modeling_vit_mae.ViTMAEForPreTrainingOutputtuple(torch.FloatTensor)

一个 transformers.models.vit_mae.modeling_vit_mae.ViTMAEForPreTrainingOutput 或一个由 torch.FloatTensor 组成的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种 元素,具体取决于配置(ViTMAEConfig)和输入。

  • loss (torch.FloatTensor 形状为 (1,)) — 像素重建损失。
  • logits (torch.FloatTensor 形状为 (batch_size, sequence_length, patch_size ** 2 * num_channels)) — 像素重建 logits。
  • mask (torch.FloatTensor 形状为 (batch_size, sequence_length)) — 指示哪些补丁被掩码(1)和哪些没有被掩码(0)的张量。
  • ids_restore (torch.LongTensor 形状为 (batch_size, sequence_length)) — 包含(打乱的)掩码补丁的原始索引的张量。
  • 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, sequence_length, sequence_length)。注意力 softmax 后的注意力权重,用于计算 自注意力头中的加权平均值。

ViTMAEForPreTraining 的前向方法,重写了 __call__ 特殊方法。

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

示例:

>>> from transformers import AutoImageProcessor, ViTMAEForPreTraining
>>> 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("facebook/vit-mae-base")
>>> model = ViTMAEForPreTraining.from_pretrained("facebook/vit-mae-base")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> loss = outputs.loss
>>> mask = outputs.mask
>>> ids_restore = outputs.ids_restore
TensorFlow
Hide TensorFlow content

TFViTMAEModel

transformers.TFViTMAEModel

< >

( config: ViTMAEConfig *inputs **kwargs )

参数

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

裸的ViTMAE模型转换器输出原始隐藏状态,没有任何特定的头部。 此模型继承自TFPreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入大小、修剪头部等)。

该模型也是一个keras.Model子类。可以将其作为常规的TF 2.0 Keras模型使用,并参考TF 2.0文档以了解与一般使用和行为相关的所有事项。

TensorFlow 模型和层在 transformers 中接受两种格式作为输入:

  • 将所有输入作为关键字参数(如PyTorch模型),或
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,当使用像 model.fit() 这样的方法时,事情应该“正常工作”——只需以 model.fit() 支持的任何格式传递你的输入和标签!然而,如果你想在 Keras 方法之外使用第二种格式,比如在使用 Keras Functional API 创建自己的层或模型时,有三种方法可以用来将所有输入张量收集到第一个位置参数中:

  • 仅包含pixel_values的单个张量,没有其他内容:model(pixel_values)
  • 一个长度不定的列表,包含一个或多个输入张量,顺序与文档字符串中给出的顺序一致: model([pixel_values, attention_mask])model([pixel_values, attention_mask, token_type_ids])
  • 一个字典,包含一个或多个与文档字符串中给出的输入名称相关联的输入张量: model({"pixel_values": pixel_values, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您不需要担心这些,因为您可以像传递任何其他Python函数一样传递输入!

调用

< >

( pixel_values: TFModelInputType | None = None noise: tf.Tensor = None head_mask: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False interpolate_pos_encoding: bool = False ) transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEModelOutputtuple(tf.Tensor)

参数

  • pixel_values (np.ndarray, tf.Tensor, List[tf.Tensor] `Dict[str, tf.Tensor] or Dict[str, np.ndarray] and each example must have the shape (batch_size, num_channels, height, width)) — 像素值。像素值可以使用AutoImageProcessor获取。详情请参见ViTImageProcessor.call()
  • head_mask (np.ndarraytf.Tensor 形状为 (num_heads,)(num_layers, num_heads), 可选) — 用于屏蔽自注意力模块中选定头部的掩码。掩码值在 [0, 1] 中选择:
    • 1 表示头部 未被屏蔽,
    • 0 表示头部 被屏蔽.
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions。此参数只能在eager模式下使用,在graph模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states。此参数只能在eager模式下使用,在graph模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回一个ModelOutput而不是一个普通的元组。此参数可以在eager模式下使用,在graph模式下该值将始终设置为True.
  • 训练 (bool, 可选, 默认为 `False“) — 是否在训练模式下使用模型(一些模块如dropout模块在训练和评估之间有不同的行为)。
  • interpolate_pos_encoding (bool, optional, defaults to False) — 是否在编码器和解码器处插值位置编码。

返回

transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEModelOutputtuple(tf.Tensor)

一个 transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEModelOutput 或一个 tf.Tensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(ViTMAEConfig)和输入的各种元素。

  • last_hidden_state (tf.Tensor 形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。
  • mask (tf.Tensor 形状为 (batch_size, sequence_length)) — 指示哪些补丁被掩码(1)和哪些未被掩码(0)的张量。
  • ids_restore (tf.Tensor 形状为 (batch_size, sequence_length)) — 包含(打乱的)掩码补丁的原始索引的张量。
  • hidden_states (tuple(tf.Tensor), 可选, 当传递了 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)tf.Tensor 元组(一个用于嵌入的输出 + 一个用于每层的输出)。模型在每层输出处的隐藏状态加上初始嵌入输出。
  • attentions (tuple(tf.Tensor), 可选, 当传递了 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为 (batch_size, num_heads, sequence_length, sequence_length)tf.Tensor 元组(每层一个)。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

TFViTMAEModel 的前向方法,重写了 __call__ 特殊方法。

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

示例:

>>> from transformers import AutoImageProcessor, TFViTMAEModel
>>> 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("facebook/vit-mae-base")
>>> model = TFViTMAEModel.from_pretrained("facebook/vit-mae-base")

>>> inputs = image_processor(images=image, return_tensors="tf")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

TFViTMAEForPreTraining

transformers.TFViTMAEForPreTraining

< >

( config )

参数

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

ViTMAE模型转换器,顶部带有解码器,用于自监督预训练。 该模型继承自TFPreTrainedModel。请查看超类文档,了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入大小、修剪头部等)。

该模型也是一个keras.Model子类。可以将其作为常规的TF 2.0 Keras模型使用,并参考TF 2.0文档以了解与一般使用和行为相关的所有事项。

TensorFlow 模型和层在 transformers 中接受两种格式作为输入:

  • 将所有输入作为关键字参数(如PyTorch模型),或
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,当使用像 model.fit() 这样的方法时,事情应该“正常工作”——只需以 model.fit() 支持的任何格式传递你的输入和标签!然而,如果你想在 Keras 方法之外使用第二种格式,比如在使用 Keras Functional API 创建自己的层或模型时,有三种方法可以用来将所有输入张量收集到第一个位置参数中:

  • 仅包含pixel_values的单个张量,没有其他内容:model(pixel_values)
  • 一个长度不定的列表,包含一个或多个输入张量,顺序与文档字符串中给出的顺序一致: model([pixel_values, attention_mask])model([pixel_values, attention_mask, token_type_ids])
  • 一个字典,包含一个或多个与文档字符串中给出的输入名称相关联的输入张量: model({"pixel_values": pixel_values, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您不需要担心这些,因为您可以像传递任何其他Python函数一样传递输入!

调用

< >

( pixel_values: TFModelInputType | None = None noise: tf.Tensor = None head_mask: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False interpolate_pos_encoding: bool = False ) transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEForPreTrainingOutputtuple(tf.Tensor)

参数

  • pixel_values (np.ndarray, tf.Tensor, List[tf.Tensor] `Dict[str, tf.Tensor] or Dict[str, np.ndarray] and each example must have the shape (batch_size, num_channels, height, width)) — 像素值。像素值可以使用AutoImageProcessor获取。详情请参见ViTImageProcessor.call()
  • head_mask (np.ndarraytf.Tensor 形状为 (num_heads,)(num_layers, num_heads), 可选) — 用于屏蔽自注意力模块中选定的头部的掩码。掩码值在 [0, 1] 中选择:
    • 1 表示头部 未被屏蔽,
    • 0 表示头部 被屏蔽.
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions。此参数只能在eager模式下使用,在graph模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states。此参数只能在eager模式下使用,在graph模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回一个ModelOutput而不是一个普通的元组。此参数可以在eager模式下使用,在graph模式下该值将始终设置为True.
  • 训练 (bool, 可选, 默认为 `False“) — 是否在训练模式下使用模型(一些模块如dropout模块在训练和评估之间有不同的行为)。
  • interpolate_pos_encoding (bool, optional, defaults to False) — 是否在编码器和解码器处插值位置编码。

返回

transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEForPreTrainingOutputtuple(tf.Tensor)

一个 transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEForPreTrainingOutput 或一个 tf.Tensor 元组(如果 return_dict=False 被传递或当 config.return_dict=False 时),包含根据配置(ViTMAEConfig)和输入的各种元素。

  • loss (tf.Tensor 形状为 (1,)) — 像素重建损失。
  • logits (tf.Tensor 形状为 (batch_size, sequence_length, patch_size ** 2 * num_channels)) — 像素重建 logits。
  • mask (tf.Tensor 形状为 (batch_size, sequence_length)) — 指示哪些 patches 被掩码(1)和哪些未被掩码(0)的张量。
  • ids_restore (tf.Tensor 形状为 (batch_size, sequence_length)) — 包含(打乱的)掩码 patches 的原始索引的张量。
  • 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 后的注意力权重,用于计算自注意力头中的加权平均值。

TFViTMAEForPreTraining 的前向方法,重写了 __call__ 特殊方法。

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

示例:

>>> from transformers import AutoImageProcessor, TFViTMAEForPreTraining
>>> 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("facebook/vit-mae-base")
>>> model = TFViTMAEForPreTraining.from_pretrained("facebook/vit-mae-base")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> loss = outputs.loss
>>> mask = outputs.mask
>>> ids_restore = outputs.ids_restore
< > Update on GitHub