Transformers 文件

DINOv2

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

PyTorch Flax FlashAttention SDPA

DINOv2

DINOv2 是一個視覺基礎模型,它使用 ViT 作為特徵提取器,用於影像分類和深度估計等多種下游任務。它透過一系列技術來穩定和加速訓練,例如更快的記憶體高效注意力機制、序列打包、改進的隨機深度、完全分片資料並行(FSDP)和模型蒸餾。

您可以在 Dinov2 合集中找到所有原始的 DINOv2 檢查點。

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

以下示例演示瞭如何使用 PipelineAutoModel 類來獲取影像嵌入。

流水線
自動模型
import torch
from transformers import pipeline

pipe = pipeline(
    task="image-classification", 
    model="facebook/dinov2-small-imagenet1k-1-layer",
    torch_dtype=torch.float16,
    device=0
)

pipe("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg")

量化透過以較低精度表示權重來減少大型模型的記憶體負擔。有關更多可用量化後端,請參閱量化概述。

以下示例使用torchao僅將權重量化為int4。

# pip install torchao
import requests
from transformers import TorchAoConfig, AutoImageProcessor, AutoModelForImageClassification
from torchao.quantization import Int4WeightOnlyConfig
from PIL import Image

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

processor = AutoImageProcessor.from_pretrained('facebook/dinov2-giant-imagenet1k-1-layer')

quant_config = Int4WeightOnlyConfig(group_size=128)
quantization_config = TorchAoConfig(quant_type=quant_config)

model = AutoModelForImageClassification.from_pretrained(
    'facebook/dinov2-giant-imagenet1k-1-layer',
    torch_dtype=torch.bfloat16,
    device_map="auto",
    quantization_config=quantization_config
)

inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])

注意事項

  • 以下示例展示瞭如何將輸出張量拆分為

    • 一個用於整個影像的嵌入,通常稱為 CLS 令牌,可用於分類和檢索
    • 一組區域性嵌入,每個對應輸入影像的一個 14x14 影像塊,可用於密集型任務,如語義分割
    from transformers import AutoImageProcessor, AutoModel
    from PIL import Image
    import requests
    
    url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
    image = Image.open(requests.get(url, stream=True).raw)
    print(image.height, image.width)  # [480, 640]
    
    processor = AutoImageProcessor.from_pretrained('facebook/dinov2-base')
    model = AutoModel.from_pretrained('facebook/dinov2-base')
    patch_size = model.config.patch_size
    
    inputs = processor(images=image, return_tensors="pt")
    print(inputs.pixel_values.shape)  # [1, 3, 224, 224]
    batch_size, rgb, img_height, img_width = inputs.pixel_values.shape
    num_patches_height, num_patches_width = img_height // patch_size, img_width // patch_size
    num_patches_flat = num_patches_height * num_patches_width
    
    outputs = model(**inputs)
    last_hidden_states = outputs[0]
    print(last_hidden_states.shape)  # [1, 1 + 256, 768]
    assert last_hidden_states.shape == (batch_size, 1 + num_patches_flat, model.config.hidden_size)
    
    cls_token = last_hidden_states[:, 0, :]
    patch_features = last_hidden_states[:, 1:, :].unflatten(1, (num_patches_height, num_patches_width))
  • 使用 torch.jit.trace 加快推理速度。但是,這會產生一些不匹配的元素。原始模型和跟蹤模型之間的差異為 1e-4。

    import torch
    from transformers import AutoImageProcessor, AutoModel
    from PIL import Image
    import requests
    
    url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
    image = Image.open(requests.get(url, stream=True).raw)
    
    processor = AutoImageProcessor.from_pretrained('facebook/dinov2-base')
    model = AutoModel.from_pretrained('facebook/dinov2-base')
    
    inputs = processor(images=image, return_tensors="pt")
    outputs = model(**inputs)
    last_hidden_states = outputs[0]
    
    # We have to force return_dict=False for tracing
    model.config.return_dict = False
    
    with torch.no_grad():
        traced_model = torch.jit.trace(model, [inputs.pixel_values])
        traced_outputs = traced_model(inputs.pixel_values)
    
    print((last_hidden_states - traced_outputs[0]).abs().max())

Dinov2Config

class transformers.Dinov2Config

< >

( hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 mlp_ratio = 4 hidden_act = 'gelu' hidden_dropout_prob = 0.0 attention_probs_dropout_prob = 0.0 initializer_range = 0.02 layer_norm_eps = 1e-06 image_size = 224 patch_size = 14 num_channels = 3 qkv_bias = True layerscale_value = 1.0 drop_path_rate = 0.0 use_swiglu_ffn = False out_features = None out_indices = None apply_layernorm = True reshape_hidden_states = True use_mask_token = True **kwargs )

引數

  • hidden_size (int, 可選, 預設為 768) — 編碼器層和池化層的維度。
  • num_hidden_layers (int, 可選, 預設為 12) — Transformer 編碼器中的隱藏層數量。
  • num_attention_heads (int, 可選, 預設為 12) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • mlp_ratio (int, 可選, 預設為 4) — MLP 隱藏層大小相對於 hidden_size 的比率。
  • hidden_act (strfunction, 可選, 預設為 "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-06) — 層歸一化層使用的 epsilon 值。
  • image_size (int, 可選, 預設為 224) — 每張影像的大小(解析度)。
  • patch_size (int, 可選, 預設為 14) — 每個影像塊的大小(解析度)。
  • num_channels (int, 可選, 預設為 3) — 輸入通道的數量。
  • qkv_bias (bool, 可選, 預設為 True) — 是否為查詢、鍵和值新增偏置。
  • layerscale_value (float, 可選, 預設為 1.0) — 用於層縮放的初始值。
  • drop_path_rate (float, 可選, 預設為 0.0) — 每個樣本的隨機深度率(應用於殘差層的主路徑中)。
  • use_swiglu_ffn (bool, 可選, 預設為 False) — 是否使用 SwiGLU 前饋神經網路。
  • out_features (list[str], 可選) — 如果用作骨幹網路,指定輸出的特徵列表。可以是 "stem""stage1""stage2" 等(取決於模型有多少個階段)。如果未設定而 out_indices 已設定,則將預設為相應的階段。如果兩者都未設定,則將預設為最後一個階段。必須與 stage_names 屬性中定義的順序相同。
  • out_indices (list[int], 可選) — 如果用作骨幹網路,指定輸出特徵的索引列表。可以是 0, 1, 2 等(取決於模型有多少個階段)。如果未設定而 out_features 已設定,則將預設為相應的階段。如果兩者都未設定,則將預設為最後一個階段。必須與 stage_names 屬性中定義的順序相同。
  • apply_layernorm (bool, 可選, 預設為 True) — 如果模型用作骨幹網路,是否對特徵圖應用層歸一化。
  • reshape_hidden_states (bool, 可選, 預設為 True) — 如果模型用作骨幹網路,是否將特徵圖重塑為形狀為 (batch_size, hidden_size, height, width) 的 4D 張量。如果為 False,特徵圖將是形狀為 (batch_size, seq_len, hidden_size) 的 3D 張量。
  • use_mask_token (bool, 可選, 預設為 True) — 是否在嵌入中使用 mask_token。

這是用於儲存 Dinov2Model 配置的配置類。它用於根據指定的引數例項化一個 Dinov2 模型,定義模型架構。使用預設值例項化配置將產生與 Dinov2 google/dinov2-base-patch16-224 架構類似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。

示例

>>> from transformers import Dinov2Config, Dinov2Model

>>> # Initializing a Dinov2 dinov2-base-patch16-224 style configuration
>>> configuration = Dinov2Config()

>>> # Initializing a model (with random weights) from the dinov2-base-patch16-224 style configuration
>>> model = Dinov2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
Pytorch
隱藏 Pytorch 內容

Dinov2Model

class transformers.Dinov2Model

< >

( config: Dinov2Config )

引數

  • config (Dinov2Config) — 模型配置類,包含模型的所有引數。用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。

裸的 Dinov2 模型,輸出原始的隱藏狀態,沒有任何特定的頭部。

該模型繼承自 PreTrainedModel。請檢視超類文件以瞭解該庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是一個 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與一般用法和行為相關的事項。

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = None bool_masked_pos: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

引數

  • pixel_values (torch.Tensor,形狀為 (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, sequence_length)) — 布林掩碼位置。指示哪些影像塊被掩碼(1)以及哪些未被掩碼(0)。僅與預訓練相關。
  • head_mask (torch.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 而不是一個普通的元組。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.BaseModelOutputWithPooling 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含各種元素,具體取決於配置(Dinov2Config)和輸入。

  • last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

  • pooler_output (torch.FloatTensor,形狀為 (batch_size, hidden_size)) — 序列的第一個令牌(分類令牌)的最後一層隱藏狀態,經過輔助預訓練任務所用的層進一步處理後的結果。例如,對於 BERT 系列模型,這將返回分類令牌經過線性層和 tanh 啟用函式處理後的結果。線性層的權重是在預訓練期間透過下一句預測(分類)目標進行訓練的。

  • hidden_states (tuple(torch.FloatTensor), 可選, 當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — 形狀為 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 一個用於每層的輸出)。

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選, 當傳遞 output_attentions=True 或當 config.output_attentions=True 時返回) — 形狀為 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元組(每層一個)。

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

Dinov2Model 的前向方法覆蓋了 __call__ 特殊方法。

雖然前向傳播的流程需要在此函式中定義,但之後應該呼叫 `Module` 例項而不是這個函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

Dinov2ForImageClassification

class transformers.Dinov2ForImageClassification

< >

( config: Dinov2Config )

引數

  • config (Dinov2Config) — 模型配置類,包含模型的所有引數。用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。

帶有影像分類頭的 Dinov2 模型轉換器(在 [CLS] 令牌的最終隱藏狀態之上加一個線性層),例如用於 ImageNet。

該模型繼承自 PreTrainedModel。請檢視超類文件以瞭解該庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是一個 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與一般用法和行為相關的事項。

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.ImageClassifierOutputtuple(torch.FloatTensor)

引數

  • pixel_values (torch.Tensor,形狀為 (batch_size, num_channels, image_size, image_size)可選) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲取。有關詳細資訊,請參閱 {image_processor_class}.__call__ ({processor_class} 使用 {image_processor_class} 處理影像)。
  • head_mask (torch.Tensor,形狀為 (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
  • return_dict (bool可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_outputs.ImageClassifierOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.ImageClassifierOutput 或一個 torch.FloatTensor 的元組 (如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含根據配置 (Dinov2Config) 和輸入的不同元素。

  • 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=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, patch_size, sequence_length)

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

Dinov2ForImageClassification 的 forward 方法重寫了 __call__ 特殊方法。

雖然前向傳播的流程需要在此函式中定義,但之後應該呼叫 `Module` 例項而不是這個函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoImageProcessor, Dinov2ForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("google/dinov2-base-patch16-224")
>>> model = Dinov2ForImageClassification.from_pretrained("google/dinov2-base-patch16-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])
...
JAX
隱藏 JAX 內容

FlaxDinov2Model

class transformers.FlaxDinov2Model

< >

( config: Dinov2Config input_shape = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )

引數

  • config (Dinov2Config) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
  • dtype (jax.numpy.dtype可選,預設為 jax.numpy.float32) — 計算的資料型別。可以是 jax.numpy.float32jax.numpy.float16 (在 GPU 上) 和 jax.numpy.bfloat16 (在 TPU 上) 之一。

    這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的 dtype 執行。

    請注意,這僅指定計算的 dtype,不影響模型引數的 dtype。

    如果您希望更改模型引數的 dtype,請參閱 to_fp16()to_bf16()

一個基礎的 Dinov2 模型轉換器,輸出原始的隱藏狀態,頂部沒有任何特定的頭。

該模型繼承自 FlaxPreTrainedModel。請查閱超類文件,瞭解庫為所有模型實現的通用方法(例如從 PyTorch 模型下載、儲存和轉換權重)。

該模型也是 flax.linen.Module 的子類。可以像常規 Flax linen 模組一樣使用它,並參考 Flax 文件瞭解所有與通用用法和行為相關的事項。

最後,此模型支援固有的 JAX 功能,例如

__call__

< >

( pixel_values params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPoolingtuple(torch.FloatTensor)

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPoolingtuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或一個 torch.FloatTensor 的元組 (如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含根據配置 (<class 'transformers.models.dinov2.configuration_dinov2.Dinov2Config'>) 和輸入的不同元素。

  • last_hidden_state (形狀為 (batch_size, sequence_length, hidden_size)jnp.ndarray) — 模型最後一層輸出的隱藏狀態序列。

  • pooler_output (jnp.ndarray,形狀為 (batch_size, hidden_size)) — 序列中第一個標記(分類標記)的最後一層隱藏狀態,經過一個線性層和一個 Tanh 啟用函式的進一步處理。線性層的權重是在預訓練期間透過下一句預測(分類)目標進行訓練的。

  • hidden_states (tuple(jnp.ndarray)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組 (一個用於嵌入層的輸出,另外每個層的輸出各一個),形狀為 (batch_size, sequence_length, hidden_size)

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

  • attentions (tuple(jnp.ndarray)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — jnp.ndarray 的元組 (每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

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

FlaxDinov2PreTrainedModel 的 forward 方法重寫了 __call__ 特殊方法。

雖然前向傳播的流程需要在此函式中定義,但之後應該呼叫 `Module` 例項而不是這個函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoImageProcessor, FlaxDinov2Model
>>> 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/dinov2-base")
>>> model = FlaxDinov2Model.from_pretrained("facebook/dinov2-base")

>>> inputs = image_processor(images=image, return_tensors="np")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

FlaxDinov2ForImageClassification

class transformers.FlaxDinov2ForImageClassification

< >

( config: Dinov2Config input_shape = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )

引數

  • config (Dinov2Config) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
  • dtype (jax.numpy.dtype可選,預設為 jax.numpy.float32) — 計算的資料型別。可以是 jax.numpy.float32jax.numpy.float16 (在 GPU 上) 和 jax.numpy.bfloat16 (在 TPU 上) 之一。

    這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的 dtype 執行。

    請注意,這僅指定計算的 dtype,不影響模型引數的 dtype。

    如果您希望更改模型引數的 dtype,請參閱 to_fp16()to_bf16()

帶有影像分類頭的 Dinov2 模型轉換器(在 [CLS] 令牌的最終隱藏狀態之上加一個線性層),例如用於 ImageNet。

該模型繼承自 FlaxPreTrainedModel。請查閱超類文件,瞭解庫為所有模型實現的通用方法(例如從 PyTorch 模型下載、儲存和轉換權重)。

該模型也是 flax.linen.Module 的子類。可以像常規 Flax linen 模組一樣使用它,並參考 Flax 文件瞭解所有與通用用法和行為相關的事項。

最後,此模型支援固有的 JAX 功能,例如

__call__

< >

( pixel_values params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None train: bool = False output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_flax_outputs.FlaxSequenceClassifierOutputtuple(torch.FloatTensor)

返回

transformers.modeling_flax_outputs.FlaxSequenceClassifierOutputtuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或一個 torch.FloatTensor 的元組 (如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含根據配置 (<class 'transformers.models.dinov2.configuration_dinov2.Dinov2Config'>) 和輸入的不同元素。

  • logits (形狀為 (batch_size, config.num_labels)jnp.ndarray) — 分類(如果 config.num_labels==1,則為迴歸)分數(SoftMax 之前)。

  • hidden_states (tuple(jnp.ndarray)可選,當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組 (一個用於嵌入層的輸出,另外每個層的輸出各一個),形狀為 (batch_size, sequence_length, hidden_size)

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

  • attentions (tuple(jnp.ndarray)可選,當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — jnp.ndarray 的元組 (每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

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

FlaxDinov2PreTrainedModel 的 forward 方法重寫了 __call__ 特殊方法。

雖然前向傳播的流程需要在此函式中定義,但之後應該呼叫 `Module` 例項而不是這個函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

示例

>>> from transformers import AutoImageProcessor, FlaxDinov2ForImageClassification
>>> from PIL import Image
>>> import jax
>>> 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/dinov2-base-imagenet1k-1-layer")
>>> model = FlaxDinov2ForImageClassification.from_pretrained("facebook/dinov2-base-imagenet1k-1-layer", from_pt=True)

>>> inputs = image_processor(images=image, return_tensors="np")
>>> outputs = model(**inputs)
>>> logits = outputs.logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_class_idx = jax.numpy.argmax(logits, axis=-1)
>>> print("Predicted class:", model.config.id2label[predicted_class_idx.item()])
< > 在 GitHub 上更新

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