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

您可以在 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
说明
- ViTMAE 通常分两个阶段使用。首先使用 ViTMAEForPreTraining 进行自监督预训练,然后丢弃解码器并微调编码器。微调后,权重可以加载到像 ViTForImageClassification 这样的模型中。
- 使用 ViTImageProcessor 进行输入准备。
资源
- 请参考此 notebook,了解如何可视化由 ViTMAEForPreTraining 重建的像素。
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
orfunction
, 可选, 默认为"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
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.ViTMAEModelOutput
或 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.ViTMAEModelOutput
或 tuple(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=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 的 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
< source >( config )
参数
- config (ViTMAEForPreTraining) — 包含模型所有参数的模型配置类。使用配置文件进行初始化不会加载与模型相关的权重,只会加载配置。请查阅 from_pretrained() 方法以加载模型权重。
带有解码器顶部的 ViTMAE 模型 Transformer,用于自监督预训练。
请注意,我们在 examples directory 中提供了一个脚本,用于在自定义数据上预训练此模型。
该模型继承自 PreTrainedModel。请查看超类的文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪注意力头等)。
该模型也是 PyTorch 的 torch.nn.Module 子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与通用用法和行为相关的事项。
forward
< source >( 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=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
TFViTMAEModel
class transformers.TFViTMAEModel
< source >( 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 函数一样传递输入!
调用
< source >( 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.ndarray
或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 而不是普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 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
< source >( 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 函数一样传递输入!
调用
< source >( 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.ndarray
或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 而不是普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 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