Transformers 文件

TimmWrapper

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

TimmWrapper

PyTorch

概述

用於實現 timm 模型載入的輔助類,以便與 transformers 庫及其自動類一起使用。

>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModelForImageClassification, AutoImageProcessor

>>> # Load image
>>> image = Image.open(urlopen(
...     'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))

>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModelForImageClassification.from_pretrained(checkpoint).eval()

>>> # Preprocess image
>>> inputs = image_processor(image)

>>> # Forward pass
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # Get top 5 predictions
>>> top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)

資源:

官方 Hugging Face 和社群(由 🌎 指示)資源列表,可幫助您開始使用 TimmWrapper。

影像分類

如需更詳細的概述,請閱讀 timm 整合的官方部落格文章

TimmWrapperConfig

class transformers.TimmWrapperConfig

< >

( initializer_range: float = 0.02 do_pooling: bool = True model_args: typing.Optional[dict[str, typing.Any]] = None **kwargs )

引數

  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。
  • do_pooling (bool, 可選, 預設為 True) — 是否對 TimmWrapperModel 中的 last_hidden_state 進行池化。
  • model_args (dict[str, Any], 可選) — 傳遞給 timm.create_model 函式的額外關鍵字引數。例如,對於 timm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1kmodel_args={"depth": 3} 用於建立具有 3 個塊的模型。預設為 None

這是用於儲存 timm 主幹 TimmWrapper 配置的配置類。

它用於根據指定的引數例項化 timm 模型,從而定義模型。

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

Config 載入 imagenet 標籤描述並將其儲存在 id2label 屬性中,預設 imagenet 模型的 label2id 屬性由於標籤描述中的遮擋而設定為 None

示例

>>> from transformers import TimmWrapperModel

>>> # Initializing a timm model
>>> model = TimmWrapperModel.from_pretrained("timm/resnet18.a1_in1k")

>>> # Accessing the model configuration
>>> configuration = model.config

TimmWrapperImageProcessor

class transformers.TimmWrapperImageProcessor

< >

( pretrained_cfg: dict architecture: typing.Optional[str] = None **kwargs )

引數

  • pretrained_cfg (dict[str, Any]) — 用於解析評估和訓練轉換的預訓練模型的配置。
  • architecture (Optional[str], 可選) — 模型架構的名稱。

用於在 transformers 中使用的 timm 模型的包裝類。

預處理

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = 'pt' )

引數

  • images (ImageInput) — 要預處理的影像。需要單個或批次影像。
  • return_tensors (strTensorType, 可選) — 要返回的張量型別。

預處理一張或一批影像。

TimmWrapperModel

class transformers.TimmWrapperModel

< >

( config: TimmWrapperConfig )

用於在 transformers 中使用的 timm 模型的包裝類。

前向傳播

< >

( pixel_values: FloatTensor output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Union[bool, list[int], NoneType] = None return_dict: typing.Optional[bool] = None do_pooling: typing.Optional[bool] = None **kwargs ) transformers.models.timm_wrapper.modeling_timm_wrapper.TimmWrapperModelOutputtuple(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} 處理影像)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。與 timm 封裝模型不相容。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。與 timm 封裝模型不相容。
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。
  • do_pooling (bool, 可選) — 是否對 TimmWrapperModel 中的 last_hidden_state 進行池化。如果傳遞 None,則使用配置中的 do_pooling 值。

返回

transformers.models.timm_wrapper.modeling_timm_wrapper.TimmWrapperModelOutputtuple(torch.FloatTensor)

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

  • last_hidden_state (<class 'torch.FloatTensor'>.last_hidden_state) — 模型的最後一個隱藏狀態,在應用分類頭之前輸出。
  • pooler_output (torch.FloatTensor, 可選) — 從最後一個隱藏狀態派生的池化輸出(如果適用)。
  • hidden_states (tuple(torch.FloatTensor), 可選, 如果設定了 output_hidden_states=Trueconfig.output_hidden_states=True 則返回) — 一個元組,包含模型在每個層或指定層的輸出處的中間隱藏狀態。
  • attentions (tuple(torch.FloatTensor), 可選, 如果設定了 output_attentions=Trueconfig.output_attentions=True 則返回) — 一個元組,包含模型在每個層輸出處的中間注意力權重。注意:目前,Timm 模型不支援注意力輸出。

TimmWrapperModel 的前向傳播方法,覆蓋了 __call__ 特殊方法。

雖然前向傳播的方案需要在此函式中定義,但在此之後應呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

示例

>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModel, AutoImageProcessor

>>> # Load image
>>> image = Image.open(urlopen(
...     'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))

>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModel.from_pretrained(checkpoint).eval()

>>> # Preprocess image
>>> inputs = image_processor(image)

>>> # Forward pass
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> # Get pooled output
>>> pooled_output = outputs.pooler_output

>>> # Get last hidden state
>>> last_hidden_state = outputs.last_hidden_state

TimmWrapperForImageClassification

class transformers.TimmWrapperForImageClassification

< >

( config: TimmWrapperConfig )

用於影像分類的 transformers 中使用的 timm 模型的包裝類。

前向傳播

< >

( pixel_values: FloatTensor labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Union[bool, list[int], NoneType] = None return_dict: typing.Optional[bool] = None **kwargs ) transformers.modeling_outputs.ImageClassifierOutputtuple(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} 處理影像)。
  • labels (torch.LongTensor,形狀為 (batch_size,), 可選) — 用於計算影像分類/迴歸損失的標籤。索引應在 [0, ..., config.num_labels - 1] 範圍內。如果 config.num_labels == 1,則計算迴歸損失(均方損失),如果 config.num_labels > 1,則計算分類損失(交叉熵)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。與 timm 封裝模型不相容。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。與 timm 封裝模型不相容。
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。**kwargs:傳遞給 timm 模型前向傳播的額外關鍵字引數。

返回

transformers.modeling_outputs.ImageClassifierOutputtuple(torch.FloatTensor)

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

  • 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 後的注意力權重,用於計算自注意力頭中的加權平均值。

TimmWrapperForImageClassification 的前向傳播方法,覆蓋了 __call__ 特殊方法。

雖然前向傳播的方案需要在此函式中定義,但在此之後應呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

示例

>>> import torch
>>> from PIL import Image
>>> from urllib.request import urlopen
>>> from transformers import AutoModelForImageClassification, AutoImageProcessor

>>> # Load image
>>> image = Image.open(urlopen(
...     'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png'
... ))

>>> # Load model and image processor
>>> checkpoint = "timm/resnet50.a1_in1k"
>>> image_processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = AutoModelForImageClassification.from_pretrained(checkpoint).eval()

>>> # Preprocess image
>>> inputs = image_processor(image)

>>> # Forward pass
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # Get top 5 predictions
>>> top5_probabilities, top5_class_indices = torch.topk(logits.softmax(dim=1) * 100, k=5)
< > 在 GitHub 上更新

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