Transformers documentation
TimmWrapper
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 및 커뮤니티(🌎로 표시) 리소스 목록입니다.
timm 통합에 대한 보다 자세한 개요는 공식 블로그 게시물을 참고하세요.
TimmWrapperConfig
클래스 transformers.TimmWrapperConfig
< source >( 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의 문서를 참고하세요.
TimmWrapperImageProcessor
클래스 transformers.TimmWrapperImageProcessor
< source >( pretrained_cfg: dictarchitecture: str | None = None**kwargs )
transformers 내에서 timm 모델을 사용하기 위한 래퍼 클래스입니다.
preprocess
< 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: str | transformers.utils.generic.TensorType | None = 'pt' )
이미지 또는 이미지 배치(batch)를 전처리합니다.
TimmWrapperModel
transformers에서 사용할 timm 모델을 위한 래퍼 클래스
forward
< source >( 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_stateTimmWrapperForImageClassification
이미지 분류를 위해 transformers에서 timm 모델을 사용할 때 사용하는 래퍼 클래스입니다.
forward
< source >( 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)