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_stateTimmWrapperForImageClassification
用於影像分類的 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)