Transformers documentation

TimmWrapper

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

TimmWrapper

개요

transformers 라이브러리 및 그 autoclasses와 함께 timm 모델을 로드할 수 있도록 하는 헬퍼 클래스입니다.

from urllib.request import urlopen

import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForImageClassification


# 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( device_map="auto")

# 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)

리소스

TimmWrapper를 시작하는 데 도움이 되는 공식 Hugging Face 및 커뮤니티(🌎로 표시) 리소스 목록입니다.

Image Classification

timm 통합에 대한 보다 자세한 개요는 공식 블로그 게시물을 참고하세요.

TimmWrapperConfig

클래스 transformers.TimmWrapperConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonearchitecture: str = 'resnet50'initializer_range: float = 0.02do_pooling: bool = Truemodel_args: dict[str, typing.Any] | None = None )

매개변수

  • architecture (str, 선택 사항, 기본값 "resnet50") — 로드할 timm 아키텍처입니다.
  • 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입니다.

이것은 resnet50

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

>>> from transformers import TimmWrapperModel

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

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

TimmWrapperImageProcessor

클래스 transformers.TimmWrapperImageProcessor

< >

( pretrained_cfg: dictarchitecture: str | None = None**kwargs )

매개변수

  • pretrained_cfg (dict[str, Any]) — 평가 및 학습 변환을 해석하는 데 사용되는 사전 학습 모델의 구성입니다.
  • architecture (Optional[str], 선택 사항) — 모델의 아키텍처 이름.

transformers 내에서 timm 모델을 사용하기 위한 래퍼 클래스입니다.

preprocess

< >

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

매개변수

  • images (ImageInput) — 전처리할 이미지. 단일 이미지 또는 이미지 배치(batch)를 기대합니다.
  • return_tensors (str 또는 TensorType, 선택 사항) — 반환할 텐서의 유형입니다.

이미지 또는 이미지 배치(batch)를 전처리합니다.

TimmWrapperModel

클래스 transformers.TimmWrapperModel

< >

( config: TimmWrapperConfig )

transformers에서 사용할 timm 모델을 위한 래퍼 클래스

forward

< >

( pixel_values: FloatTensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = Nonedo_pooling: bool | None = Noneuse_cache: bool | None = None**kwargs ) → TimmWrapperModelOutput or tuple(torch.FloatTensor)

매개변수

  • pixel_values (torch.FloatTensor, shape (batch_size, num_channels, image_size, image_size)) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 TimmWrapperImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 TimmWrapperImageProcessor.call()를 참조하세요 (processor_class는 이미지 처리에 TimmWrapperImageProcessor를 사용합니다).
  • output_attentions (bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부입니다. timm으로 래핑된 모델과 호환되지 않습니다.
  • output_hidden_states (bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. timm 래핑된 모델과 호환되지 않습니다.
  • return_dict (bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
  • do_pooling (bool, 선택 사항) — TimmWrapperModel의 last_hidden_state에 pooling을 수행할지 여부입니다. None이 전달되면 config의 do_pooling 값이 사용됩니다.
  • use_cache (bool, 선택 사항) — True로 설정하면 past_key_values 키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다( past_key_values 참조).

반환값

TimmWrapperModelOutput 또는 tuple(torch.FloatTensor)

TimmWrapperModelOutput 또는 torch.FloatTensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(TimmWrapperConfig)과 입력에 따라 다양한 요소를 포함합니다.

TimmWrapperModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • last_hidden_state (torch.FloatTensor) — 분류 헤드를 적용하기 전에 출력되는 모델의 마지막 히든 상태입니다.
  • pooler_output (torch.FloatTensor, 선택 사항) — 적용 가능한 경우, 마지막 hidden state에서 파생된 pooled output입니다.
  • hidden_states (tuple(torch.FloatTensor), 선택 사항, output_hidden_states=True가 설정되었거나 config.output_hidden_states=True인 경우 반환됨) — 각 레이어 또는 지정된 레이어의 출력에서 모델의 중간 hidden states를 포함하는 tuple입니다.
  • attentions (tuple(torch.FloatTensor), 선택 사항, output_attentions=True가 설정되었거나 config.output_attentions=True인 경우 반환됨.) — 각 레이어 출력에서 모델의 중간 attention 가중치를 포함하는 tuple입니다. 참고: 현재 Timm 모델은 attentions 출력을 지원하지 않습니다.

예:

>>> 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 모델을 사용할 때 사용하는 래퍼 클래스입니다.

forward

< >

( pixel_values: FloatTensorlabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | list[int] | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutput or tuple(torch.FloatTensor)

매개변수

  • pixel_values (torch.FloatTensor, shape (batch_size, num_channels, image_size, image_size)) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 TimmWrapperImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 TimmWrapperImageProcessor.call()를 참조하세요 (processor_class는 이미지 처리에 TimmWrapperImageProcessor를 사용합니다).
  • labels (torch.LongTensor, shape (batch_size,), 선택 사항) — 이미지 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는 [0, ..., config.num_labels - 1] 범위에 있어야 합니다. config.num_labels == 1인 경우 회귀 손실(평균 제곱 오차)이 계산되고, config.num_labels > 1인 경우 분류 손실(교차 엔트로피)이 계산됩니다.
  • output_attentions (bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부입니다. timm으로 래핑된 모델과 호환되지 않습니다.
  • output_hidden_states (bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. timm 래핑된 모델과 호환되지 않습니다.
  • return_dict (bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부. **kwargs: timm 모델의 forward에 전달되는 추가 키워드 인자.

반환값

ImageClassifierOutput 또는 tuple(torch.FloatTensor)

torch.FloatTensor의 튜플 또는 ImageClassifierOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우에도 동일합니다. 구성(TimmWrapperConfig)과 입력에 따라 다양한 요소를 포함합니다.

TimmWrapperForImageClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.FloatTensor, shape (1,), 선택 사항, labels가 제공될 때 반환됨) — 분류(또는 config.num_labels==1인 경우 회귀) 손실.

  • logits (torch.FloatTensor, shape (batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.

  • hidden_states (tuple(torch.FloatTensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.FloatTensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력용 1개 + 각 단계의 출력용 1개)로, 모양은 (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)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> 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)
Update on GitHub