Transformers 文档

ViTMAE

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

PyTorch TensorFlow FlashAttention SDPA

ViTMAE

ViTMAE 是一种自监督视觉模型,它通过遮盖图像的大部分(约 75%)来进行预训练。编码器处理可见的图像块,解码器则从编码后的图像块和掩码令牌中重建缺失的像素。预训练后,编码器可用于下游任务,如图像分类或目标检测,其性能通常优于使用监督学习训练的模型。

drawing

您可以在 AI at Meta 组织下找到所有原始的 ViTMAE 检查点。

点击右侧边栏中的 ViTMAE 模型,查看更多关于如何将 ViTMAE 应用于视觉任务的示例。

下面的示例演示了如何使用 ViTMAEForPreTraining 类重建缺失的像素。

自动模型
import torch
import requests
from PIL import Image
from transformers import ViTImageProcessor, ViTMAEForPreTraining

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)

processor = ViTImageProcessor.from_pretrained("facebook/vit-mae-base")
inputs = processor(image, return_tensors="pt")
inputs = {k: v.to("cuda") for k, v in inputs.items()}

model = ViTMAEForPreTraining.from_pretrained("facebook/vit-mae-base", attn_implementation="sdpa").to("cuda")
with torch.no_grad():
    outputs = model(**inputs)

reconstruction = outputs.logits

说明

资源

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, 可选, 默认为 768) — 编码器层和池化层的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。
  • num_attention_heads (int, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数量。
  • intermediate_size (int, 可选, 默认为 3072) — Transformer 编码器中“中间”(即前馈)层的维度。
  • hidden_act (str or function, 可选, 默认为 "gelu") — 编码器和池化层中的非线性激活函数(函数或字符串)。如果为字符串,支持 "gelu""relu""selu""gelu_new"
  • hidden_dropout_prob (float, 可选, 默认为 0.0) — 嵌入层、编码器和池化层中所有全连接层的丢弃概率。
  • attention_probs_dropout_prob (float, 可选, 默认为 0.0) — 注意力概率的丢弃率。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-12) — 层归一化层使用的 epsilon 值。
  • image_size (int, 可选, 默认为 224) — 每张图像的尺寸(分辨率)。
  • patch_size (int, 可选, 默认为 16) — 每个图像块的尺寸(分辨率)。
  • num_channels (int, 可选, 默认为 3) — 输入通道的数量。
  • qkv_bias (bool, 可选, 默认为 True) — 是否为查询、键和值添加偏置。
  • decoder_num_attention_heads (int, 可选, 默认为 16) — 解码器中每个注意力层的注意力头数量。
  • decoder_hidden_size (int, 可选, 默认为 512) — 解码器的维度。
  • decoder_num_hidden_layers (int, 可选, 默认为 8) — 解码器中的隐藏层数量。
  • decoder_intermediate_size (int, 可选, 默认为 2048) — 解码器中“中间”(即前馈)层的维度。
  • mask_ratio (float, 可选, 默认为 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
隐藏 Pytorch 内容

ViTMAEModel

class transformers.ViTMAEModel

< >

( config )

参数

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

基础的 Vit Mae 模型,输出原始的隐藏状态,没有任何特定的头部。

该模型继承自 PreTrainedModel。请查看超类的文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪注意力头等)。

该模型也是 PyTorch 的 torch.nn.Module 子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与通用用法和行为相关的事项。

forward

< >

( 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, 形状为 (batch_size, num_channels, image_size, image_size), 可选) — 对应于输入图像的张量。像素值可以使用 {image_processor_class} 获取。详情请参阅 {image_processor_class}.__call__ ({processor_class} 使用 {image_processor_class} 处理图像)。
  • noise (torch.FloatTensor, 形状为 (batch_size, sequence_length), 可选) — 主要用于测试目的,以控制随机性并保持可复现性
  • 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, 可选, 默认为 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 (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor, 可选,默认为 None) — 模型最后一层输出的隐藏状态序列。

  • 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=Trueconfig.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(如果模型有嵌入层,则一个用于嵌入层的输出,另外每个层各一个输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple[torch.FloatTensor], 可选, 在传入 output_attentions=Trueconfig.output_attentions=True 时返回) — torch.FloatTensor 的元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

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

ViTMAEModel 的 forward 方法,覆盖了 __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

class transformers.ViTMAEForPreTraining

< >

( config )

参数

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

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

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

该模型继承自 PreTrainedModel。请查看超类的文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪注意力头等)。

该模型也是 PyTorch 的 torch.nn.Module 子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与通用用法和行为相关的事项。

forward

< >

( 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.ViTMAEForPreTrainingOutput or 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} 处理图像)。
  • noise (torch.FloatTensor,形状为 (batch_size, sequence_length)可选) — 主要用于测试目的,以控制随机性并保持可复现性。
  • 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可选,默认为 False) — 是否对预训练的位置编码进行插值。这主要用于在更高分辨率的图像上使用模型。

返回

transformers.models.vit_mae.modeling_vit_mae.ViTMAEForPreTrainingOutput or tuple(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=Trueconfig.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(如果模型有嵌入层,则一个用于嵌入层的输出,另外每个层各一个输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple[torch.FloatTensor], 可选, 在传入 output_attentions=Trueconfig.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
隐藏 TensorFlow 内容

TFViTMAEModel

class transformers.TFViTMAEModel

< >

( config: ViTMAEConfig *inputs **kwargs )

参数

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

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

此模型也是 keras.Model 的子类。可以像常规的 TF 2.0 Keras 模型一样使用它,并参考 TF 2.0 文档了解所有与通用用法和行为相关的事项。

transformers 中的 TensorFlow 模型和层接受两种输入格式

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

支持第二种格式的原因是,Keras 方法在向模型和层传递输入时更喜欢这种格式。由于这种支持,当使用像 model.fit() 这样的方法时,事情应该能“顺利进行”——只需以 model.fit() 支持的任何格式传递你的输入和标签!但是,如果你想在 Keras 方法(如 fit()predict())之外使用第二种格式,例如在使用 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: Optional[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.TFViTMAEModelOutput or tuple(tf.Tensor)

参数

  • pixel_values (np.ndarray, tf.Tensor, list[tf.Tensor] `dict[str, tf.Tensor]dict[str, np.ndarray],且每个示例的形状必须为 (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。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool可选,默认为 `False`) — 是否在训练模式下使用模型(某些模块如 dropout 模块在训练和评估之间有不同的行为)。
  • interpolate_pos_encoding (bool可选,默认为 False) — 是否在编码器和解码器处插值位置编码。

返回

transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEModelOutput or tuple(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 of shape (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 时返回) — 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 之后的注意力权重,用于在自注意力头中计算加权平均值。

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

class transformers.TFViTMAEForPreTraining

< >

( config )

参数

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

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

此模型也是 keras.Model 的子类。可以像常规的 TF 2.0 Keras 模型一样使用它,并参考 TF 2.0 文档了解所有与通用用法和行为相关的事项。

transformers 中的 TensorFlow 模型和层接受两种输入格式

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

支持第二种格式的原因是,Keras 方法在向模型和层传递输入时更喜欢这种格式。由于这种支持,当使用像 model.fit() 这样的方法时,事情应该能“顺利进行”——只需以 model.fit() 支持的任何格式传递你的输入和标签!但是,如果你想在 Keras 方法(如 fit()predict())之外使用第二种格式,例如在使用 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: Optional[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.TFViTMAEForPreTrainingOutput or tuple(tf.Tensor)

参数

  • pixel_values (np.ndarray, tf.Tensor, list[tf.Tensor] `dict[str, tf.Tensor]dict[str, np.ndarray],且每个示例的形状必须为 (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。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool可选,默认为 `False`) — 是否在训练模式下使用模型(某些模块如 dropout 模块在训练和评估之间有不同的行为)。
  • interpolate_pos_encoding (bool可选,默认为 False) — 是否在编码器和解码器处插值位置编码。

返回

transformers.models.vit_mae.modeling_tf_vit_mae.TFViTMAEForPreTrainingOutput or tuple(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)) — 表示哪些补丁被掩码(1)以及哪些未被掩码(0)的张量。
  • ids_restore (tf.Tensor,形状为 (batch_size, sequence_length)) — 包含(已打乱的)被掩码补丁的原始索引的张量。
  • 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
< > 在 GitHub 上更新