Transformers 文件

Swin Transformer

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

PyTorch TensorFlow

Swin Transformer

Swin Transformer 是一種分層視覺變換器。影像以圖塊的形式進行處理,並使用視窗化自注意力機制來捕獲區域性資訊。這些視窗在影像上移動,以實現跨視窗連線,從而更有效地捕獲全域性資訊。這種帶有移動視窗的分層方法使得 Swin Transformer 能夠有效地處理不同尺度的影像,並實現相對於影像大小的線性計算複雜度,使其成為各種視覺任務(如影像分類和物體檢測)的通用主幹網路。

您可以在 Microsoft 組織下找到所有官方的 Swin Transformer 模型檢查點。

點選右側邊欄中的 Swin Transformer 模型,檢視更多關於如何將 Swin Transformer 應用於不同影像任務的示例。

以下示例演示瞭如何使用 PipelineAutoModel 類對影像進行分類。

流水線
自動模型
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 or function, 可選, 預設為 "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
Pytorch
隱藏 Pytorch 內容

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.SwinMaskedImageModelingOutputtuple(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.SwinMaskedImageModelingOutputtuple(torch.FloatTensor)

一個 transformers.models.swin.modeling_swin.SwinMaskedImageModelingOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.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.SwinImageClassifierOutputtuple(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.SwinImageClassifierOutputtuple(torch.FloatTensor)

一個 transformers.models.swin.modeling_swin.SwinImageClassifierOutput 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=Falseconfig.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])
...
TensorFlow
隱藏 TensorFlow 內容

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.TFSwinModelOutputtuple(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.TFSwinModelOutputtuple(tf.Tensor)

一個 transformers.models.swin.modeling_tf_swin.TFSwinModelOutput 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=Falseconfig.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=Trueconfig.output_hidden_states=True 時返回) — `tf.Tensor` 的元組(一個用於嵌入層的輸出,一個用於每個階段的輸出),形狀為 `(batch_size, sequence_length, hidden_size)`。

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor), 可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — `tf.Tensor` 的元組(每個階段一個),形狀為 `(batch_size, num_heads, sequence_length, sequence_length)`。

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • reshaped_hidden_states (tuple(tf.Tensor), 可選,當傳遞 output_hidden_states=Trueconfig.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.TFSwinMaskedImageModelingOutputtuple(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.TFSwinMaskedImageModelingOutputtuple(tf.Tensor)

一個 transformers.models.swin.modeling_tf_swin.TFSwinMaskedImageModelingOutput 或一個 tf.Tensor 的元組(如果傳遞了 return_dict=Falseconfig.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=Trueconfig.output_hidden_states=True 時返回) — `tf.Tensor` 的元組(一個用於嵌入層的輸出,一個用於每個階段的輸出),形狀為 `(batch_size, sequence_length, hidden_size)`。

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor), 可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — `tf.Tensor` 的元組(每個階段一個),形狀為 `(batch_size, num_heads, sequence_length, sequence_length)`。

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • reshaped_hidden_states (tuple(tf.Tensor), 可選,當傳遞 output_hidden_states=Trueconfig.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.TFSwinImageClassifierOutputtuple(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.TFSwinImageClassifierOutputtuple(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=Trueconfig.output_hidden_states=True 時返回) — `tf.Tensor` 的元組(一個用於嵌入層的輸出,一個用於每個階段的輸出),形狀為 `(batch_size, sequence_length, hidden_size)`。

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

  • attentions (tuple(tf.Tensor), 可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — `tf.Tensor` 的元組(每個階段一個),形狀為 `(batch_size, num_heads, sequence_length, sequence_length)`。

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • reshaped_hidden_states (tuple(tf.Tensor), 可選,當傳遞 output_hidden_states=Trueconfig.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
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.