Transformers 文件
TimmWrapper
並獲得增強的文件體驗
開始使用
TimmWrapper
概述
用於實現 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
< source >( 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_in1k
,model_args={"depth": 3}
用於建立具有 3 個塊的模型。預設為None
。
這是用於儲存 timm 主幹 TimmWrapper
配置的配置類。
它用於根據指定的引數例項化 timm 模型,從而定義模型。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
Config 載入 imagenet 標籤描述並將其儲存在 id2label
屬性中,預設 imagenet 模型的 label2id
屬性由於標籤描述中的遮擋而設定為 None
。
TimmWrapperImageProcessor
class transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: dict architecture: typing.Optional[str] = None **kwargs )
用於在 transformers 中使用的 timm 模型的包裝類。
預處理
< source >( 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' )
預處理一張或一批影像。
TimmWrapperModel
用於在 transformers 中使用的 timm 模型的包裝類。
前向傳播
< source >( 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.TimmWrapperModelOutput
或 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}
處理影像)。 - 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.TimmWrapperModelOutput
或 tuple(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=True
或config.output_hidden_states=True
則返回) — 一個元組,包含模型在每個層或指定層的輸出處的中間隱藏狀態。 - attentions (
tuple(torch.FloatTensor)
, 可選, 如果設定了output_attentions=True
或config.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
用於影像分類的 transformers 中使用的 timm 模型的包裝類。
前向傳播
< source >( 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.ImageClassifierOutput 或 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}
處理影像)。 - 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.ImageClassifierOutput 或 tuple(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=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 後的注意力權重,用於計算自注意力頭中的加權平均值。
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)