Transformers 文件
DINOv2
並獲得增強的文件體驗
開始使用
DINOv2
DINOv2 是一個視覺基礎模型,它使用 ViT 作為特徵提取器,用於影像分類和深度估計等多種下游任務。它透過一系列技術來穩定和加速訓練,例如更快的記憶體高效注意力機制、序列打包、改進的隨機深度、完全分片資料並行(FSDP)和模型蒸餾。
您可以在 Dinov2 合集中找到所有原始的 DINOv2 檢查點。
點選右側邊欄中的 DINOv2 模型,檢視更多關於如何將 DINOv2 應用於不同視覺任務的示例。
以下示例演示瞭如何使用 Pipeline 或 AutoModel 類來獲取影像嵌入。
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 (
str
或function
, 可選, 預設為"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
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.BaseModelOutputWithPooling 或 tuple(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.BaseModelOutputWithPooling 或 tuple(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.ImageClassifierOutput 或 tuple(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.ImageClassifierOutput 或 tuple(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=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, 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])
...
FlaxDinov2Model
class transformers.FlaxDinov2Model
< source >( 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.float32
、jax.numpy.float16
(在 GPU 上) 和jax.numpy.bfloat16
(在 TPU 上) 之一。這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的
dtype
執行。請注意,這僅指定計算的 dtype,不影響模型引數的 dtype。
一個基礎的 Dinov2 模型轉換器,輸出原始的隱藏狀態,頂部沒有任何特定的頭。
該模型繼承自 FlaxPreTrainedModel。請查閱超類文件,瞭解庫為所有模型實現的通用方法(例如從 PyTorch 模型下載、儲存和轉換權重)。
該模型也是 flax.linen.Module 的子類。可以像常規 Flax linen 模組一樣使用它,並參考 Flax 文件瞭解所有與通用用法和行為相關的事項。
最後,此模型支援固有的 JAX 功能,例如
__call__
< source >( 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.FlaxBaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或 tuple(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=True
或config.output_hidden_states=True
時返回) —jnp.ndarray
的元組 (一個用於嵌入層的輸出,另外每個層的輸出各一個),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳遞output_attentions=True
或config.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
< source >( 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.float32
、jax.numpy.float16
(在 GPU 上) 和jax.numpy.bfloat16
(在 TPU 上) 之一。這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的
dtype
執行。請注意,這僅指定計算的 dtype,不影響模型引數的 dtype。
帶有影像分類頭的 Dinov2 模型轉換器(在 [CLS] 令牌的最終隱藏狀態之上加一個線性層),例如用於 ImageNet。
該模型繼承自 FlaxPreTrainedModel。請查閱超類文件,瞭解庫為所有模型實現的通用方法(例如從 PyTorch 模型下載、儲存和轉換權重)。
該模型也是 flax.linen.Module 的子類。可以像常規 Flax linen 模組一樣使用它,並參考 Flax 文件瞭解所有與通用用法和行為相關的事項。
最後,此模型支援固有的 JAX 功能,例如
__call__
< source >( 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.FlaxSequenceClassifierOutput 或 tuple(torch.FloatTensor)
返回
transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或 tuple(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=True
或config.output_hidden_states=True
時返回) —jnp.ndarray
的元組 (一個用於嵌入層的輸出,另外每個層的輸出各一個),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳遞output_attentions=True
或config.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()])