Transformers 文件
Swin Transformer
並獲得增強的文件體驗
開始使用
Swin Transformer
Swin Transformer 是一種分層視覺變換器。影像以圖塊的形式進行處理,並使用視窗化自注意力機制來捕獲區域性資訊。這些視窗在影像上移動,以實現跨視窗連線,從而更有效地捕獲全域性資訊。這種帶有移動視窗的分層方法使得 Swin Transformer 能夠有效地處理不同尺度的影像,並實現相對於影像大小的線性計算複雜度,使其成為各種視覺任務(如影像分類和物體檢測)的通用主幹網路。
您可以在 Microsoft 組織下找到所有官方的 Swin Transformer 模型檢查點。
點選右側邊欄中的 Swin Transformer 模型,檢視更多關於如何將 Swin Transformer 應用於不同影像任務的示例。
以下示例演示瞭如何使用 Pipeline 或 AutoModel 類對影像進行分類。
import torch
from transformers import pipeline
pipeline = pipeline(
task="image-classification",
model="microsoft/swin-tiny-patch4-window7-224",
torch_dtype=torch.float16,
device=0
)
pipeline(images="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg")
注意
- Swin 可以為任何可被
32
整除的輸入高度和寬度填充輸入。 - Swin 可以用作主幹網路。當 `output_hidden_states = True` 時,它會同時輸出 `hidden_states` 和 `reshaped_hidden_states`。`reshaped_hidden_states` 的形狀是 `(batch, num_channels, height, width)`,而不是 `(batch_size, sequence_length, num_channels)`。
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) — 每個圖塊的大小(解析度)。 - num_channels (
int
, 可選, 預設為 3) — 輸入通道的數量。 - embed_dim (
int
, 可選, 預設為 96) — 圖塊嵌入的維度。 - 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
) — 是否應向查詢、鍵和值新增可學習的偏置。 - hidden_dropout_prob (
float
, 可選, 預設為 0.0) — 嵌入層和編碼器中所有全連線層的丟棄機率。 - attention_probs_dropout_prob (
float
, 可選, 預設為 0.0) — 注意力機率的丟棄率。 - drop_path_rate (
float
, 可選, 預設為 0.1) — 隨機深度率。 - hidden_act (
str
orfunction
, 可選, 預設為"gelu"
) — 編碼器中的非線性啟用函式(函式或字串)。如果為字串,支援"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - use_absolute_embeddings (
bool
, 可選, 預設為False
) — 是否向圖塊嵌入新增絕對位置嵌入。 - initializer_range (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。 - layer_norm_eps (
float
, 可選, 預設為 1e-05) — 層歸一化層使用的 epsilon 值。 - encoder_stride (
int
, 可選, 預設為 32) — 用於在解碼器頭中增加掩碼影像建模的空間解析度的因子。 - out_features (
list[str]
, 可選) — 如果用作主幹網路,要輸出的特徵列表。可以是"stem"
、"stage1"
、"stage2"
等(取決於模型有多少個階段)。如果未設定且 `out_indices` 已設定,則預設為相應的階段。如果未設定且 `out_indices` 也未設定,則預設為最後一個階段。必須與 `stage_names` 屬性中定義的順序相同。 - out_indices (
list[int]
, 可選) — 如果用作主幹網路,要輸出的特徵索引列表。可以是 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
SwinModel
class transformers.SwinModel
< 來源 >( config add_pooling_layer = True use_mask_token = False )
引數
- config (SwinModel) — 包含模型所有引數的模型配置類。用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
- add_pooling_layer (
bool
, 可選, 預設為True
) — 是否應用池化層。 - use_mask_token (
bool
, 可選, 預設為False
) — 是否在嵌入層中建立和應用掩碼標記。
原始的 Swin 模型,輸出未經任何特定頭處理的原始隱藏狀態。
該模型繼承自 PreTrainedModel。有關該庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等),請查閱超類文件。
該模型也是一個 PyTorch torch.nn.Module 的子類。可以像使用常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< 來源 >( pixel_values: typing.Optional[torch.FloatTensor] = None bool_masked_pos: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) → transformers.models.swin.modeling_swin.SwinModelOutput
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}
來處理影像)。 - bool_masked_pos (
torch.BoolTensor
,形狀為(batch_size, num_patches)
,可選) — 布林掩碼位置。指示哪些圖塊被掩碼 (1),哪些沒有 (0)。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參見返回張量下的 `attentions`。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參見返回張量下的 `hidden_states`。 - interpolate_pos_encoding (
bool
, 預設為False
) — 是否對預訓練的位置編碼進行插值。 - return_dict (
bool
, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。
返回
transformers.models.swin.modeling_swin.SwinModelOutput
or tuple(torch.FloatTensor)
一個 `transformers.models.swin.modeling_swin.SwinModelOutput` 或一個 `torch.FloatTensor` 的元組(如果傳遞了 `return_dict=False` 或 `config.return_dict=False`),包含根據配置(SwinConfig)和輸入的不同元素。
-
last_hidden_state (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
, 可選,預設為None
) — 模型最後一層輸出的隱藏狀態序列。 -
pooler_output (
torch.FloatTensor
,形狀為(batch_size, hidden_size)
,可選,當傳遞add_pooling_layer=True
時返回) — 最後一層隱藏狀態的平均池化。 -
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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
reshaped_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳遞 `output_hidden_states=True` 或 `config.output_hidden_states=True` 時返回) — `torch.FloatTensor` 的元組(一個用於嵌入層的輸出 + 一個用於每個階段的輸出),形狀為 `(batch_size, hidden_size, height, width)`。模型在每層輸出處的隱藏狀態,以及重新調整以包含空間維度的初始嵌入輸出。
SwinModel 的前向方法,覆蓋了 `__call__` 特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理前後處理步驟,而後者會默默地忽略它們。
SwinForMaskedImageModeling
class transformers.SwinForMaskedImageModeling
< 來源 >( config )
引數
- config (SwinForMaskedImageModeling) — 包含模型所有引數的模型配置類。用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
帶有解碼器的 Swin 模型,用於掩碼影像建模,如 SimMIM 中所提議。
請注意,我們在 examples directory 中提供了一個指令碼,用於在自定義資料上預訓練此模型。
該模型繼承自 PreTrainedModel。有關該庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等),請查閱超類文件。
該模型也是一個 PyTorch torch.nn.Module 的子類。可以像使用常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< 來源 >( pixel_values: typing.Optional[torch.FloatTensor] = None bool_masked_pos: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) → transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutput
或 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}
處理影像)。 - bool_masked_pos (
torch.BoolTensor
,形狀為(batch_size, num_patches)
) — 布林型別的掩碼位置。指示哪些影像塊被掩蓋 (1),哪些沒有 (0)。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
, 可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭未被掩蓋,
- 0 表示頭被掩蓋。
- output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - interpolate_pos_encoding (
bool
,預設為False
) — 是否對預訓練的位置編碼進行插值。 - return_dict (
bool
, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。
返回
transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutput
或 tuple(torch.FloatTensor)
一個 transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutput
或一個 torch.FloatTensor
的元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置(SwinConfig)和輸入的不同元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,當提供bool_masked_pos
時返回) — 掩碼影像建模 (MLM) 損失。 -
reconstruction (
torch.FloatTensor
,形狀為(batch_size, num_channels, height, width)
) — 重構的畫素值。 -
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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
reshaped_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳遞 `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
class transformers.SwinForImageClassification
< 原始碼 >( config )
引數
- config (SwinForImageClassification) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
Swin Model transformer,頂部帶有一個影像分類頭(在 [CLS] 標記的最終隱藏狀態之上加一個線性層),例如用於 ImageNet。
請注意,透過在模型的前向傳播中將 `interpolate_pos_encoding` 設定為 `True`,可以在比訓練時解析度更高的影像上微調 Swin。這會將預訓練的位置嵌入插值到更高的解析度。
該模型繼承自 PreTrainedModel。有關該庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等),請查閱超類文件。
該模型也是一個 PyTorch torch.nn.Module 的子類。可以像使用常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< 原始碼 >( pixel_values: typing.Optional[torch.FloatTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None ) → transformers.models.swin.modeling_swin.SwinImageClassifierOutput
或 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}
處理影像)。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
, 可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值在[0, 1]
中選擇:- 1 表示頭未被掩蓋,
- 0 表示頭被掩蓋。
- labels (
torch.LongTensor
,形狀為(batch_size,)
, 可選) — 用於計算影像分類/迴歸損失的標籤。索引應在[0, ..., config.num_labels - 1]
範圍內。如果config.num_labels == 1
,則計算迴歸損失(均方損失),如果config.num_labels > 1
,則計算分類損失(交叉熵)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - interpolate_pos_encoding (
bool
,預設為False
) — 是否對預訓練的位置編碼進行插值。 - return_dict (
bool
, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。
返回
transformers.models.swin.modeling_swin.SwinImageClassifierOutput
或 tuple(torch.FloatTensor)
一個 transformers.models.swin.modeling_swin.SwinImageClassifierOutput
或一個 torch.FloatTensor
的元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置(SwinConfig)和輸入的不同元素。
-
loss (形狀為
(1,)
的torch.FloatTensor
,可選,當提供labels
時返回) — 分類損失(如果 config.num_labels==1,則為迴歸損失)。 -
logits (形狀為
(batch_size, config.num_labels)
的torch.FloatTensor
) — 分類(如果 config.num_labels==1,則為迴歸)分數(SoftMax 之前)。 -
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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
reshaped_hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳遞 `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")
>>> 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])
...
TFSwinModel
class transformers.TFSwinModel
< 原始碼 >( config: SwinConfig add_pooling_layer: bool = True use_mask_token: bool = False **kwargs )
引數
- config (SwinConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
基礎的 Swin Model transformer,輸出原始的隱藏狀態,頂部沒有任何特定的頭。該模型是 Tensorflow keras.layers.Layer 的子類。可以像常規的 Tensorflow Module 一樣使用它,並參考 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.TFSwinModelOutput
或 tuple(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)
, 可選) — 布林型別的掩碼位置。指示哪些影像塊被掩蓋 (1),哪些沒有 (0)。
返回
transformers.models.swin.modeling_tf_swin.TFSwinModelOutput
或 tuple(tf.Tensor)
一個 transformers.models.swin.modeling_tf_swin.TFSwinModelOutput
或一個 tf.Tensor
的元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置(SwinConfig)和輸入的不同元素。
-
last_hidden_state (
tf.Tensor
of shape(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=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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
reshaped_hidden_states (
tuple(tf.Tensor)
, 可選,當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) — `tf.Tensor` 的元組(一個用於嵌入層的輸出,一個用於每個階段的輸出),形狀為 `(batch_size, hidden_size, height, width)`。模型在每層輸出處的隱藏狀態,以及重新調整以包含空間維度的初始嵌入輸出。
TFSwinModel 的 forward 方法重寫了 __call__
特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理前後處理步驟,而後者會默默地忽略它們。
示例
>>> from transformers import AutoImageProcessor, TFSwinModel
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> 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 Module 一樣使用它,並參考 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.TFSwinMaskedImageModelingOutput
或 tuple(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)
) — 布林型別的掩碼位置。指示哪些影像塊被掩蓋 (1),哪些沒有 (0)。
返回
transformers.models.swin.modeling_tf_swin.TFSwinMaskedImageModelingOutput
或 tuple(tf.Tensor)
一個 transformers.models.swin.modeling_tf_swin.TFSwinMaskedImageModelingOutput
或一個 tf.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=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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
reshaped_hidden_states (
tuple(tf.Tensor)
, 可選,當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) — `tf.Tensor` 的元組(一個用於嵌入層的輸出,一個用於每個階段的輸出),形狀為 `(batch_size, hidden_size, height, width)`。模型在每層輸出處的隱藏狀態,以及重新調整以包含空間維度的初始嵌入輸出。
TFSwinForMaskedImageModeling 的 forward 方法重寫了 __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 Model transformer,頂部帶有一個影像分類頭(在 [CLS] 標記的最終隱藏狀態之上加一個線性層),例如用於 ImageNet。
該模型是 Tensorflow keras.layers.Layer 的子類。可以像常規的 Tensorflow Module 一樣使用它,並參考 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.TFSwinImageClassifierOutput
或 tuple(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.TFSwinImageClassifierOutput
或 tuple(tf.Tensor)
一個 transformers.models.swin.modeling_tf_swin.TFSwinImageClassifierOutput
或一個 tf.Tensor
的元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),包含的各種元素取決於配置(SwinConfig)和輸入。
-
loss (形狀為
(1,)
的tf.Tensor
,可選,當提供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=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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
reshaped_hidden_states (
tuple(tf.Tensor)
, 可選,當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) — `tf.Tensor` 的元組(一個用於嵌入層的輸出,一個用於每個階段的輸出),形狀為 `(batch_size, hidden_size, height, width)`。模型在每層輸出處的隱藏狀態,以及重新調整以包含空間維度的初始嵌入輸出。
TFSwinForImageClassification 的 forward 方法重寫了 __call__
特殊方法。
儘管前向傳遞的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理前後處理步驟,而後者會默默地忽略它們。
示例
>>> from transformers import AutoImageProcessor, TFSwinForImageClassification
>>> import tensorflow as tf
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image"))
>>> 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