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