Transformers documentation
Perceiver
이 모델은 2021-07-30에 HF papers에 게시되었으며, 2021-12-08에 Hugging Face Transformers에 기여되었습니다.
Perceiver
개요
Perceiver IO 모델은 Andrew Jaegle, Sebastian Borgeaud, Jean-Baptiste Alayrac, Carl Doersch, Catalin Ionescu, David Ding, Skanda Koppula, Daniel Zoran, Andrew Brock, Evan Shelhamer, Olivier Hénaff, Matthew M. Botvinick, Andrew Zisserman, Oriol Vinyals, João Carreira가 Perceiver IO: A General Architecture for Structured Inputs & Outputs에서 제안했습니다.
Perceiver IO는 임의의 입력과 함께 임의의 출력을 처리하도록 Perceiver를 일반화한 모델입니다. 원래 Perceiver는 단일 분류 라벨만 생성했습니다. Perceiver IO는 분류 라벨 외에도 (예를 들어) 언어, 광학 흐름, 오디오가 포함된 멀티모달 비디오를 생성할 수 있습니다. 이는 원래 Perceiver와 동일한 구성 요소를 사용하여 수행됩니다. Perceiver IO의 계산 복잡도는 입력 및 출력 크기에 대해 선형이며, 처리의 대부분은 잠재 공간(latent space)에서 이루어지므로 표준 Transformers로 처리할 수 있는 것보다 훨씬 큰 입력과 출력을 처리할 수 있습니다. 예를 들어, Perceiver IO는 토큰화된 입력 대신 바이트를 직접 사용하여 BERT 스타일의 마스킹 언어 모델링을 수행할 수 있습니다.
해당 논문의 초록은 다음과 같습니다:
최근 제안된 Perceiver 모델은 이미지, 오디오, 멀티모달, 포인트 클라우드 등 여러 도메인에서 좋은 결과를 얻으면서도 입력 크기에 따라 계산량과 메모리가 선형적으로 확장됩니다. Perceiver는 다양한 종류의 입력을 지원하지만, 클래스 점수와 같은 매우 단순한 출력만 생성할 수 있습니다. Perceiver IO는 모델의 잠재 공간을 유연하게 쿼리하여 임의의 크기와 의미를 가진 출력을 생성하도록 학습함으로써, 원래 모델의 매력적인 특성을 희생하지 않으면서도 이 한계를 극복합니다. Perceiver IO 역시 모델의 깊이를 데이터 크기와 분리하고 데이터 크기에 따라 선형적으로 확장되지만, 이제 입력과 출력 크기에 모두 해당됩니다. 전체 Perceiver IO 모델은 자연어 및 시각 이해, StarCraft II, 멀티태스크 및 멀티모달 도메인처럼 출력이 고도로 구조화된 작업에서 강력한 결과를 달성합니다. 특히, Perceiver IO는 입력 토큰화가 필요 없이 GLUE 언어 벤치마크에서 Transformer 기반 BERT 베이스라인과 동등한 성능을 보이며, Sintel 광학 흐름 추정에서 최첨단 성능을 달성합니다.
Perceiver의 작동 방식을 요약한 TLDR입니다:
Transformer의 self-attention 메커니즘의 주요 문제는 시간과 메모리 요구량이 시퀀스 길이에 따라 제곱으로 증가한다는 점입니다. 따라서 BERT와 RoBERTa와 같은 모델은 최대 시퀀스 길이가 512 토큰으로 제한됩니다. Perceiver는 입력에 self-attention을 수행하는 대신, 잠재 변수(latent variables) 집합에 self-attention을 수행하고 입력은 cross-attention에만 사용함으로써 이 문제를 해결하고자 합니다. 이렇게 하면 256개나 512개와 같이 고정된 수의 잠재 변수를 사용하므로, 시간과 메모리 요구량이 더 이상 입력의 길이에 의존하지 않습니다. 이러한 잠재 변수는 무작위로 초기화된 후, backpropagation을 사용하여 end-to-end로 학습됩니다.
내부적으로 PerceiverModel은 (batch_size, num_latents, d_latents) 형태의 텐서인 latents를 생성합니다. 모델에는 텍스트, 이미지, 오디오 등 다양한 형태의 inputs를 제공해야 하며, 모델은 이를 사용하여 latents와 cross-attention을 수행합니다. Perceiver 인코더의 출력은 동일한 형태의 텐서입니다. 이후 BERT와 유사하게, latents의 마지막 hidden states를 시퀀스 차원 방향으로 평균화하여 분류 logits로 변환한 뒤, 그 위에 선형 레이어를 배치하여 d_latents를 num_labels로 투영할 수 있습니다.
이것은 원래 Perceiver 논문에서 제시된 아이디어였습니다. 그러나 이 방식은 분류 로짓만 출력할 수 있었습니다. 후속 연구인 PerceiverIO에서는 이를 일반화하여 모델이 임의의 크기의 출력을 생성할 수 있도록 했습니다. 어떻게 가능할까요? 아이디어는 실제로 비교적 단순합니다. 임의의 크기의 출력을 정의한 다음, latents의 마지막 hidden states를 사용하여 cross-attention을 적용합니다. 이때 출력은 query로, latents는 key와 value로 사용됩니다.
Perceiver로 masked language modeling(BERT 스타일)을 수행한다고 가정해 보겠습니다. Perceiver의 입력 길이는 self-attention 레이어의 계산 시간에 영향을 주지 않으므로, 모델에 길이 2048의 inputs로 원시 바이트를 제공할 수 있습니다. 이제 이 2048개 토큰 중 일부를 mask 처리하면, outputs의 shape을 (batch_size, 2048, 768)로 정의할 수 있습니다. 다음으로, latents의 최종 hidden states와 cross-attention을 수행하여 outputs 텐서를 업데이트합니다. cross-attention 이후에도 여전히 shape이 (batch_size, 2048, 768)인 텐서가 됩니다. 이 위에 일반적인 language modeling head를 올려 마지막 차원을 모델의 어휘 크기, 즉 shape이 (batch_size, 2048, 262)인 logits를 생성하도록 투영할 수 있습니다(Perceiver는 262개의 byte ID 어휘 크기를 사용하므로).
Perceiver IO architecture. Taken from the original paper 이 모델은 nielsr에 의해 기여되었습니다. 원본 코드는 여기에서 찾을 수 있습니다.
PyTorch의 버그로 인해 Perceiver는
torch.nn.DataParallel과 동작하지 않습니다. 이슈 #36035를 참조하세요.
리소스
- Perceiver를 가장 빠르게 시작하는 방법은 튜토리얼 노트북을 확인하는 것입니다.
- 모델이 어떻게 동작하며 라이브러리에서 어떻게 구현되는지를 완전히 이해하려면 블로그 게시물을 참고하세요. 라이브러리에 포함된 모델은 Perceiver로 수행할 수 있는 작업의 일부 예시만을 보여줍니다. 질의응답, 개체명 인식, 객체 감지, 오디오 분류, 비디오 분류 등 훨씬 많은 사용 사례가 있습니다.
- 텍스트 분류 작업 가이드
- 마스크 언어 모델링 작업 가이드
- 이미지 분류 작업 가이드
Perceiver 전용 출력
class transformers.models.perceiver.modeling_perceiver.PerceiverModelOutput
< source >( logits: typing.Optional[torch.Tensor] = Nonelast_hidden_state: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = None )
매개변수
- logits (
torch.Tensor, shape(batch_size, num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수. - last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다. - hidden_states (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_hidden_states=True이 전달되거나config.output_hidden_states=True) — 다음 형태의 튜플:torch.Tensor(임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는(batch_size, sequence_length, hidden_size).각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
- attentions (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_attentions=True이 전달되거나config.output_attentions=True) — 다음의 튜플입니다:torch.Tensor(각 레이어당 하나씩, 모양이(batch_size, num_heads, sequence_length, sequence_length).self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
- cross_attentions (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_attentions=True이 전달되거나config.output_attentions=True) — 다음 형태의 튜플:torch.Tensor(각 레이어당 하나씩, 형태는(batch_size, num_heads, sequence_length, sequence_length).decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
숨겨진 상태(hidden states), 어텐션(attentions), 크로스 어텐션(cross-attentions)을 포함할 수 있는 Perceiver 베이스 모델의 출력에 대한 베이스 클래스입니다.
클래스 transformers.models.perceiver.modeling_perceiver.PerceiverDecoderOutput
< source >( logits: typing.Optional[torch.Tensor] = Nonecross_attentions: tuple[torch.Tensor] | None = None )
매개변수
- logits (
torch.Tensor, shape(batch_size, num_labels)) — 기본 decoder의 출력입니다. - cross_attentions (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_attentions=True이 전달되거나config.output_attentions=True) — 다음 형태의 튜플:torch.Tensor(각 레이어당 하나씩, 형태는(batch_size, num_heads, sequence_length, sequence_length).decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
Perceiver 디코더 출력의 베이스 클래스로, 크로스 어텐션이 포함될 수 있습니다.
class transformers.models.perceiver.modeling_perceiver.PerceiverMaskedLMOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = None )
매개변수
- loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — Masked language modeling (MLM) loss. - logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드의 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수). - hidden_states (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_hidden_states=True이 전달되거나config.output_hidden_states=True) — 다음 형태의 튜플:torch.Tensor(임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는(batch_size, sequence_length, hidden_size).각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
- attentions (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_attentions=True이 전달되거나config.output_attentions=True) — 다음의 튜플입니다:torch.Tensor(각 레이어당 하나씩, 모양이(batch_size, num_heads, sequence_length, sequence_length).self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
- cross_attentions (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_attentions=True이 전달되거나config.output_attentions=True) — 다음 형태의 튜플:torch.Tensor(각 레이어당 하나씩, 형태는(batch_size, num_heads, sequence_length, sequence_length).decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
Perceiver의 masked language model 출력을 위한 기본 클래스입니다.
class transformers.models.perceiver.modeling_perceiver.PerceiverClassifierOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = None )
매개변수
- loss (
torch.Tensor, shape(1,), 선택 사항,labels가 제공될 때 반환됨) — 분류 손실(또는 config.num_labels==1인 경우 회귀 손실). - logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수. - hidden_states (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_hidden_states=True이 전달되거나config.output_hidden_states=True) — 다음 형태의 튜플:torch.Tensor(임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는(batch_size, sequence_length, hidden_size).각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
- attentions (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_attentions=True이 전달되거나config.output_attentions=True) — 다음의 튜플입니다:torch.Tensor(각 레이어당 하나씩, 모양이(batch_size, num_heads, sequence_length, sequence_length).self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
- cross_attentions (
tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다:output_attentions=True이 전달되거나config.output_attentions=True) — 다음 형태의 튜플:torch.Tensor(각 레이어당 하나씩, 형태는(batch_size, num_heads, sequence_length, sequence_length).decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
시퀀스/이미지 분류 모델, 광학 흐름 및 멀티모달 오토인코딩을 위한 Perceiver의 출력 베이스 클래스입니다.
PerceiverConfig
클래스 transformers.PerceiverConfig
< 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 = Nonenum_latents: int = 256d_latents: int = 1280d_model: int = 768num_blocks: int = 1num_self_attends_per_block: int = 26num_self_attention_heads: int = 8num_cross_attention_heads: int = 8qk_channels: int | None = Nonev_channels: int | None = Nonecross_attention_shape_for_attention: str = 'kv'self_attention_widening_factor: int = 1cross_attention_widening_factor: int = 1hidden_act: str = 'gelu'attention_probs_dropout_prob: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-12use_query_residual: bool = Truevocab_size: int = 262max_position_embeddings: int = 2048image_size: int | list[int] | tuple[int, int] = 56train_size: list[int] | tuple[int, ...] = (368, 496)num_frames: int = 16audio_samples_per_frame: int = 1920samples_per_patch: int = 16output_shape: list[int] | tuple[int, ...] = (1, 16, 224, 224)output_num_channels: int = 512_label_trainable_num_channels: int = 1024 )
매개변수
- num_latents (
int, 선택 사항, 기본값 256) — Latent의 개수입니다. - d_latents (
int, 선택 사항, 기본값 1280) — 잠재 임베딩의 차원. - d_model (
int, 선택 사항, 기본값768) — 인코더 레이어와 풀러 레이어의 크기입니다. - num_blocks (
int, 선택 사항, 기본값 1) — Transformer 인코더의 블록 수. - num_self_attends_per_block (
int, 선택 사항, 기본값 26) — 블록당 self-attention 레이어의 수입니다. - num_self_attention_heads (
int, 선택 사항, 기본값 8) — Transformer 인코더의 각 self-attention 레이어에 사용할 attention head 수입니다. - num_cross_attention_heads (
int, 선택 사항, 기본값 8) — Transformer 인코더의 각 cross-attention 레이어에 사용할 attention head 수입니다. - qk_channels (
int, 선택 사항) — 인코더의 cross-attention 및 self-attention 레이어에서 attention을 적용하기 전에 queries와 keys를 투영할 차원입니다. 지정하지 않으면 queries의 차원을 유지하는 값이 기본값으로 사용됩니다. - v_channels (
int, 선택 사항) — 인코더의 cross-attention 및 self-attention 레이어에서 attention을 적용하기 전에 values를 투영할 차원입니다. 지정하지 않으면 queries의 차원을 유지하는 값이 기본값으로 사용됩니다. - cross_attention_shape_for_attention (
str, 선택 사항, 기본값"kv") — 인코더의 cross-attention 레이어에서 queries와 keys를 다운샘플링할 때 사용할 차원입니다. - self_attention_widening_factor (
int, 선택 사항, 기본값 1) — Transformer 인코더의 cross-attention 레이어에서 feed-forward 레이어의 차원. - cross_attention_widening_factor (
int, 선택 사항, 기본값 1) — Transformer 인코더의 self-attention 레이어에서 feed-forward 레이어의 차원입니다. - hidden_act (
str, 선택 사항, 기본값gelu) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - attention_probs_dropout_prob (
Union[float, int], 선택 사항, 기본값0.1) — Attention 확률에 적용할 dropout 비율입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-12) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - use_query_residual (
float, 선택 사항, 기본값True) — 인코더의 cross-attention 레이어에 query residual을 추가할지 여부입니다. - vocab_size (
int, 선택 사항, 기본값262) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - max_position_embeddings (
int, 선택 사항, 기본값2048) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다. - image_size (
int, 선택, 기본값 56) — PerceiverForImageClassificationLearned에서 전처리 후 이미지의 크기입니다. - train_size (
list[int], 선택 사항, 기본값[368, 496]) — 광학 흐름 모델의 이미지 학습 크기입니다. - num_frames (
int, 선택 사항, 기본값 16) — 멀티모달 오토인코딩 모델에 사용되는 비디오 프레임 수입니다. - audio_samples_per_frame (
int, 선택 사항, 기본값 1920) — 멀티모달 오토인코딩 모델에서 프레임당 오디오 샘플 수. - samples_per_patch (
int, 선택 사항, 기본값 16) — 멀티모달 오토인코딩 모델을 위해 오디오를 전처리할 때 패치당 오디오 샘플 수입니다. - output_shape (
list[int], 선택 사항, 기본값[1, 16, 224, 224]) — 멀티모달 오토인코딩 모델의 비디오 디코더 쿼리에 대한 출력의 형상(batch_size, num_frames, height, width)입니다. 이 형상에는 채널 차원이 포함되지 않습니다. - output_num_channels (
int, 선택 사항, 기본값 512) — 각 모달리티 디코더의 출력 채널 수.
이것은 PerceiverModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Perceiver 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 deepmind/language-perceiver와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
예:
>>> from transformers import PerceiverModel, PerceiverConfig
>>> # Initializing a Perceiver deepmind/language-perceiver style configuration
>>> configuration = PerceiverConfig()
>>> # Initializing a model from the deepmind/language-perceiver style configuration
>>> model = PerceiverModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configPerceiverTokenizer
클래스 transformers.PerceiverTokenizer
< source >( pad_token = '[PAD]'bos_token = '[BOS]'eos_token = '[EOS]'mask_token = '[MASK]'cls_token = '[CLS]'sep_token = '[SEP]'model_max_length = 2048**kwargs )
매개변수
- pad_token (
str, 선택 사항, 기본값"[PAD]") — 패딩에 사용되는 토큰입니다. 예를 들어, 길이가 다른 시퀀스를 배치(batching)할 때 사용됩니다. - bos_token (
str, 선택 사항, 기본값"[BOS]") — BOS 토큰(어휘에 예약되어 있지만 실제로는 사용되지 않음). - eos_token (
str, 선택 사항, 기본값은"[EOS]") — 시퀀스 종료 토큰(어휘에 예약되어 있지만 실제로는 사용되지 않음). 특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 종료에 사용되는 토큰은 이 토큰이 아닙니다. 사용되는 토큰은 sep_token입니다.특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 끝에는 이 토큰이 사용되지 않습니다. 사용되는 토큰은
sep_token입니다. - mask_token (
str, 선택 사항, 기본값"[MASK]") — 마스크 언어 모델링에 유용한 MASK 토큰입니다. - cls_token (
str, 선택 사항, 기본값"[CLS]") — CLS 토큰(어휘에 예약되어 있지만 실제로는 사용되지 않음). - sep_token (
str, 선택 사항, 기본값"[SEP]") — 두 시퀀스로 시퀀스를 구성할 때 사용되는 구분자 토큰입니다.
Perceiver 토크나이저를 구성합니다. Perceiver는 단순히 원시 바이트의 utf-8 인코딩을 사용합니다.
이 토크나이저는 대부분의 주요 메서드를 포함하는 PreTrainedTokenizer를 상속합니다. 해당 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
매개변수
- text (
str,list[str],list[list[str]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위함). - text_pair (
str,list[str],list[list[str]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위함). - text_target (
str,list[str],list[list[str]], 선택 사항) — 타겟 텍스트로 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위함). - text_pair_target (
str,list[str],list[list[str]], 선택 사항) — 타겟 텍스트로 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위해). - tokenizer_kwargs (
dict[str, Any], 선택) — 토크나이저에 전달할 추가 kwargs입니다. 이들은 명시적 매개변수 및 기타 kwargs와 병합되며, 명시적 매개변수가 우선합니다. - add_special_tokens (
bool, 선택 사항, 기본값True) — 시퀀스를 인코딩할 때 특수 토큰을 추가할지 여부입니다. 이는 입력 ID에 자동으로 추가되는 토큰을 정의하는 기반 함수인PretrainedTokenizerBase.build_inputs_with_special_tokens를 사용합니다.bos또는eos토큰을 자동으로 추가하려는 경우 유용합니다. - padding (
bool,str또는 PaddingStrategy, 선택 사항, 기본값은False) — 패딩을 활성화하고 제어합니다. 다음 값을 허용합니다:True또는'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).'max_length':max_length인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.False또는'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
- truncation (
bool,str또는 TruncationStrategy, 선택 사항, 기본값은False) — 잘림을 활성화하고 제어합니다. 다음 값을 허용합니다:True또는'longest_first':max_length인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 경우 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍 중 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.'only_first':max_length인수로 지정된 최대 길이 또는 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘립니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 쌍의 첫 번째 시퀀스만 잘립니다.'only_second':max_length인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.False또는'do_not_truncate'(기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
- max_length (
int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.설정하지 않거나
None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다. - stride (
int, 선택 사항, 기본값 0) —max_length와 함께 숫자로 설정하면,return_overflowing_tokens=True일 때 반환되는 오버플로 토큰에는 잘린 시퀀스의 끝부분에서 가져온 일부 토큰이 포함됩니다. 이를 통해 잘린 시퀀스와 오버플로 시퀀스 사이에 일부 중복이 생깁니다. 이 인수의 값은 중복되는 토큰의 수를 정의합니다. - is_split_into_words (
bool, 선택 사항, 기본값False) — 입력이 이미 사전 토큰화(예: 단어 단위로 분리)되었는지 여부입니다.True로 설정하면 토크나이저는 입력이 이미 단어 단위로 분리되어 있다고 가정하고(예: 공백 기준으로 분리) 이를 토큰화합니다. 이는 NER 또는 토큰 분류에 유용합니다. - pad_to_multiple_of (
int, 선택 사항) — 설정하면 시퀀스를 제공된 값의 배수로 패딩합니다.padding이 활성화되어 있어야 합니다. 이는 Volta에서>= 7.5의 컴퓨트 기능을 가진 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용합니다. - padding_side (
str, 선택 사항) — 모델에 패딩을 적용할 쪽입니다. [‘right’, ‘left’] 중에서 선택해야 합니다. 기본값은 동일한 이름의 클래스 속성에서 가져옵니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': Numpynp.ndarray객체를 반환합니다.
- return_token_type_ids (
bool, 선택 사항) — 토큰 타입 ID를 반환할지 여부. 기본값으로 두면, 해당 토크나이저의 기본값에 따라 토큰 타입 ID를 반환합니다. 이 기본값은return_outputs속성으로 정의됩니다. - return_attention_mask (
bool, 선택 사항) — attention mask를 반환할지 여부. 기본값으로 두면,return_outputs속성에 의해 정의된 해당 tokenizer의 기본값에 따라 attention mask를 반환합니다. - return_overflowing_tokens (
bool, 선택 사항, 기본값False) — 넘치는 토큰 시퀀스를 반환할지 여부입니다. 입력 ID의 시퀀스 쌍(또는 쌍의 배치)이truncation_strategy = longest_first또는True와 함께 제공되면, 넘치는 토큰을 반환하는 대신 오류가 발생합니다. - return_special_tokens_mask (
bool, 선택 사항, 기본값False) — 특수 토큰 마스크 정보를 반환할지 여부. - return_offsets_mapping (
bool, 선택 사항, 기본값은False) — 각 토큰에 대해(char_start, char_end)를 반환할지 여부입니다.이 기능은 PreTrainedTokenizerFast를 상속하는 빠른 토크나이저에서만 사용할 수 있으며, Python의 토크나이저를 사용하는 경우 이 메서드는
NotImplementedError를 발생시킵니다. - return_length (
bool, 선택 사항, 기본값False) — 인코딩된 입력의 길이를 반환할지 여부. - verbose (
bool, 선택 사항, 기본값True) — 추가 정보와 경고를 출력할지 여부. - **kwargs —
self.tokenize()메서드에 전달됩니다
반환값
다음 필드를 가진 BatchEncoding:
-
input_ids — 모델에 입력할 토큰 ID 목록.
-
token_type_ids — 모델에 입력할 토큰 유형 ID 목록 (
return_token_type_ids=True인 경우 또는self.model_input_names에 “token_type_ids”가 포함된 경우). -
attention_mask — 모델이 어떤 토큰에 주의를 기울여야 하는지 지정하는 인덱스 목록 (
return_attention_mask=True이거나self.model_input_names에 “attention_mask”가 포함된 경우). -
overflowing_tokens — 넘친 토큰 시퀀스 목록(
max_length이 지정되고return_overflowing_tokens=True인 경우). -
num_truncated_tokens — 잘림된 토큰의 개수(
max_length가 지정되고return_overflowing_tokens=True인 경우). -
special_tokens_mask — 0과 1의 목록으로, 1은 추가된 특수 토큰을, 0은 일반 시퀀스 토큰을 나타냅니다(
add_special_tokens=True이고return_special_tokens_mask=True인 경우). -
length — 입력의 길이 (
return_length=True인 경우)
하나 이상의 시퀀스 또는 하나 이상의 시퀀스 쌍을 토큰화하여 모델에 맞게 준비하는 주요 메서드입니다.
PerceiverImageProcessor
클래스 transformers.PerceiverImageProcessor
< source >( **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )
매개변수
- do_convert_rgb (
bool, kwargs, 선택 사항) — 이미지를 RGB로 변환할지 여부입니다. - do_resize (
bool, kwargs, 선택 사항, 기본값True) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, 기본값{'height' -- 224, 'width': 224}): 모델에 입력되는 최대 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항, 기본값True) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부입니다. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, 기본값{'height' -- 256, 'width': 256}):center_crop을 적용한 후의 출력 이미지 크기입니다. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, 기본값3) — 이미지를 리사이즈할 때 사용할 리샘플링 필터입니다.PILImageResamplingenum 중 하나를 사용할 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택, 기본값True) — 이미지를 다시 스케일링할지 여부. - rescale_factor (
float, kwargs, 선택 사항, 기본값0.00392156862745098) —do_rescale이True로 설정된 경우 이미지를 재조정(rescale)하는 데 사용할 재조정 계수입니다. - do_normalize (
bool, kwargs, 선택, 기본값True) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[0.485, 0.456, 0.406]) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[0.229, 0.224, 0.225]) — 정규화에 사용할 이미지 표준 편차입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_pad (
bool, kwargs, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 이미지를 패딩할{"height": int, "width" int}크기를 지정합니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다.pad_size가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 패딩됩니다.do_pad=True.일 때만 적용됩니다. - do_center_crop (
bool, kwargs, 선택, 기본값True) — 이미지를 중앙으로 크롭할지 여부. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) —'pt'로 설정된 경우 스택된 텐서를 반환하고, 그렇지 않으면 텐서 목록을 반환합니다. - disable_grouping (
bool, kwargs, 선택 사항) — 이미지를 크기에 따라 그룹화하는 것을 비활성화하여 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다. - image_seq_length (
int, kwargs, 선택 사항) — 입력에서 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다.
PerceiverImageProcessor 이미지 프로세서를 생성합니다.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]*argsimage_like_kwargs: dict[str, typing.Any] | None = None**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> ) → ~image_processing_base.BatchFeature
매개변수
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 전처리할 이미지. 픽셀 값이 0에서 255 범위로 이루어진 단일 이미지 또는 배치 이미지를 기대합니다. 픽셀 값이 0에서 1 사이인 이미지를 전달하는 경우do_rescale=False로 설정하세요. - image_like_kwargs (
dict[str, Any], 선택) — 추가 이미지 유사 입력을 전처리할 때 사용하는 개발자용 플래그입니다. 입력을 kwarg로 전달하는 것이 작동하지 않는 경우에만 사용하세요. 예를 들어,preprocess(images, masks=masks)가 권장되는 옵션이지만 일부 모델에서는 인자 우선순위 문제가 발생할 수 있습니다. 이러한 경우 대신preprocess(images, image_like_inputs={"masks": masks})를 사용할 수 있습니다. - do_convert_rgb (
bool, kwargs, 선택 사항) — 이미지를 RGB로 변환할지 여부입니다. - do_resize (
bool, kwargs, 선택) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 모델의 최대 입력 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_crop을 적용한 후 출력 이미지의 크기. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 이미지를 리사이즈할 경우 사용할 리샘플링 필터입니다. 이는PILImageResamplingenum 중 하나일 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택 사항) — 이미지를 다시 스케일링할지 여부입니다. - rescale_factor (
float, kwargs, optional) —do_rescale이True로 설정된 경우 이미지를 리스케일하기 위한 리스케일 팩터입니다. - do_normalize (
bool, kwargs, optional) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 표준 편차.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_pad (
bool, kwargs, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 이미지를 패딩할{"height": int, "width" int}크기를 지정합니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다.pad_size가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 패딩됩니다.do_pad=True.일 때만 적용됩니다. - do_center_crop (
bool, kwargs, 선택) — 이미지를 중앙으로 크롭할지 여부. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) —'pt'로 설정된 경우 스택된 텐서를 반환하고, 그렇지 않으면 텐서 목록을 반환합니다. - disable_grouping (
bool, kwargs, 선택 사항) — 이미지를 크기에 따라 그룹화하는 것을 비활성화하여 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다. - image_seq_length (
int, kwargs, 선택 사항) — 입력에서 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다.
반환값
~image_processing_base.BatchFeature
- data (
dict) — call 메서드가 반환하는 리스트/배열/텐서 딕셔너리(‘pixel_values’ 등). - tensor_type (
Union[None, str, TensorType], 선택 사항) — 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type를 지정할 수 있습니다.
이미지 또는 이미지 배치(batch)를 전처리합니다.
PerceiverImageProcessorPil
클래스 transformers.PerceiverImageProcessorPil
< source >( **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )
매개변수
- do_convert_rgb (
bool, kwargs, 선택 사항) — 이미지를 RGB로 변환할지 여부입니다. - do_resize (
bool, kwargs, 선택 사항, 기본값True) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, 기본값{'height' -- 224, 'width': 224}): 모델에 입력되는 최대 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항, 기본값True) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부입니다. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, 기본값{'height' -- 256, 'width': 256}):center_crop을 적용한 후의 출력 이미지 크기입니다. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, 기본값3) — 이미지를 리사이즈할 때 사용할 리샘플링 필터입니다.PILImageResamplingenum 중 하나를 사용할 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택, 기본값True) — 이미지를 다시 스케일링할지 여부. - rescale_factor (
float, kwargs, 선택 사항, 기본값0.00392156862745098) —do_rescale이True로 설정된 경우 이미지를 재조정(rescale)하는 데 사용할 재조정 계수입니다. - do_normalize (
bool, kwargs, 선택, 기본값True) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[0.485, 0.456, 0.406]) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[0.229, 0.224, 0.225]) — 정규화에 사용할 이미지 표준 편차입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_pad (
bool, kwargs, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 이미지를 패딩할{"height": int, "width" int}크기를 지정합니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다.pad_size가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 패딩됩니다.do_pad=True.일 때만 적용됩니다. - do_center_crop (
bool, kwargs, 선택, 기본값True) — 이미지를 중앙으로 크롭할지 여부. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) —'pt'로 설정된 경우 스택된 텐서를 반환하고, 그렇지 않으면 텐서 목록을 반환합니다. - disable_grouping (
bool, kwargs, 선택 사항) — 이미지를 크기에 따라 그룹화하는 것을 비활성화하여 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다. - image_seq_length (
int, kwargs, 선택 사항) — 입력에서 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다.
PerceiverImageProcessor 이미지 프로세서를 생성합니다.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]*argsimage_like_kwargs: dict[str, typing.Any] | None = None**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> ) → ~image_processing_base.BatchFeature
매개변수
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 전처리할 이미지. 픽셀 값이 0에서 255 범위로 이루어진 단일 이미지 또는 배치 이미지를 기대합니다. 픽셀 값이 0에서 1 사이인 이미지를 전달하는 경우do_rescale=False로 설정하세요. - image_like_kwargs (
dict[str, Any], 선택) — 추가 이미지 유사 입력을 전처리할 때 사용하는 개발자용 플래그입니다. 입력을 kwarg로 전달하는 것이 작동하지 않는 경우에만 사용하세요. 예를 들어,preprocess(images, masks=masks)가 권장되는 옵션이지만 일부 모델에서는 인자 우선순위 문제가 발생할 수 있습니다. 이러한 경우 대신preprocess(images, image_like_inputs={"masks": masks})를 사용할 수 있습니다. - do_convert_rgb (
bool, kwargs, 선택 사항) — 이미지를 RGB로 변환할지 여부입니다. - do_resize (
bool, kwargs, 선택) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 모델의 최대 입력 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_crop을 적용한 후 출력 이미지의 크기. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 이미지를 리사이즈할 경우 사용할 리샘플링 필터입니다. 이는PILImageResamplingenum 중 하나일 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택 사항) — 이미지를 다시 스케일링할지 여부입니다. - rescale_factor (
float, kwargs, optional) —do_rescale이True로 설정된 경우 이미지를 리스케일하기 위한 리스케일 팩터입니다. - do_normalize (
bool, kwargs, optional) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 표준 편차.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_pad (
bool, kwargs, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 이미지를 패딩할{"height": int, "width" int}크기를 지정합니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다.pad_size가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 패딩됩니다.do_pad=True.일 때만 적용됩니다. - do_center_crop (
bool, kwargs, 선택) — 이미지를 중앙으로 크롭할지 여부. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) —'pt'로 설정된 경우 스택된 텐서를 반환하고, 그렇지 않으면 텐서 목록을 반환합니다. - disable_grouping (
bool, kwargs, 선택 사항) — 이미지를 크기에 따라 그룹화하는 것을 비활성화하여 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다. - image_seq_length (
int, kwargs, 선택 사항) — 입력에서 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다.
반환값
~image_processing_base.BatchFeature
- data (
dict) — call 메서드가 반환하는 리스트/배열/텐서 딕셔너리(‘pixel_values’ 등). - tensor_type (
Union[None, str, TensorType], 선택 사항) — 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type를 지정할 수 있습니다.
이미지 또는 이미지 배치(batch)를 전처리합니다.
PerceiverTextPreprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverTextPreprocessor
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델 구성입니다.
Perceiver Encoder를 위한 텍스트 전처리. inputs를 임베딩하고 위치 인코딩을 추가하는 데 사용할 수 있습니다.
임베딩의 차원은 구성의 d_model 속성에 의해 결정됩니다.
PerceiverImagePreprocessor
클래스 transformers.models.perceiver.modeling_perceiver.PerceiverImagePreprocessor
< source >( configprep_type = 'conv'spatial_downsample: int = 4temporal_downsample: int = 1position_encoding_type: str = 'fourier'in_channels: int = 3out_channels: int = 64conv_after_patching: bool = Falseconv_after_patching_in_channels: int = 54conv2d_use_batchnorm: bool = Trueconcat_or_add_pos: str = 'concat'project_pos_dim: int = -1**position_encoding_kwargs )
매개변수
- config ([PerceiverConfig]) — 모델 구성입니다.
- prep_type (
str, 선택 사항, 기본값"conv") — 전처리 유형입니다. “conv1x1”, “conv”, “patches”, “pixels” 중 하나를 지정할 수 있습니다. - spatial_downsample (
int, 선택 사항, 기본값 4) — 공간 다운샘플링 계수입니다. - temporal_downsample (
int, 선택 사항, 기본값 1) — 시간 차원 하위 샘플링 계수(시간 차원이 존재하는 경우에만 관련이 있음). - position_encoding_type (
str, 선택 사항, 기본값"fourier") — 위치 인코딩 유형입니다. “fourier” 또는 “trainable”을 사용할 수 있습니다. - in_channels (
int, 선택 사항, 기본값 3) — 입력의 채널 수. - out_channels (
int, 선택 사항, 기본값 64) — 출력의 채널 수. - conv_after_patching (
bool, 선택 사항, 기본값False) — 패칭 후 컨볼루션 레이어를 적용할지 여부입니다. - conv_after_patching_in_channels (
int, 선택 사항, 기본값 54) — 패칭 이후 컨볼루션 레이어 입력의 채널 수입니다. - conv2d_use_batchnorm (
bool, 선택 사항, 기본값True) — 컨볼루션 레이어에서 배치 정규화를 사용할지 여부. - concat_or_add_pos (
str, 선택 사항, 기본값"concat") — 입력에 위치 인코딩을 결합하는 방법입니다. “concat” 또는 “add”를 사용할 수 있습니다. - project_pos_dim (
int, 선택 사항, 기본값 -1) — 투영할 위치 인코딩의 차원입니다. -1인 경우 투영이 적용되지 않습니다. - **position_encoding_kwargs (
Dict, 선택) — 위치 인코딩을 위한 키워드 인자입니다.
Perceiver Encoder를 위한 이미지 전처리.
참고: out_channels 인자는 prep_type이 “conv1x1” 또는 “conv”로 설정된 경우 컨볼루션 레이어의 출력 채널을 가리킵니다. 절대 위치 임베딩을 추가하는 경우, 위치 인코딩 kwargs의 num_channels가 out_channels와 같도록 설정되어 있는지 확인해야 합니다.
PerceiverOneHotPreprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverOneHotPreprocessor
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델 구성입니다.
Perceiver Encoder용 원-핫(One-hot) 전처리기입니다. 입력에 더미 인덱스 차원을 추가하는 데 사용할 수 있습니다.
PerceiverAudioPreprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverAudioPreprocessor
< source >( configprep_type: str = 'patches'samples_per_patch: int = 96position_encoding_type: str = 'fourier'concat_or_add_pos: str = 'concat'out_channels = 64project_pos_dim = -1**position_encoding_kwargs )
매개변수
- config ([PerceiverConfig]) — 모델 구성입니다.
- prep_type (
str, 선택 사항, 기본값"patches") — 사용할 Preprocessor 유형입니다."patches"만 지원됩니다. - samples_per_patch (
int, 선택 사항, 기본값 96) — 패치당 샘플 수. - position_encoding_type (
str, 선택 사항, 기본값"fourier") — 사용할 위치 인코딩의 유형입니다. “trainable” 또는 “fourier”를 사용할 수 있습니다. - concat_or_add_pos (
str, 선택 사항, 기본값"concat") — 입력에 위치 인코딩을 결합하는 방법입니다. “concat” 또는 “add”를 사용할 수 있습니다. - out_channels (
int, 선택 사항, 기본값 64) — 출력의 채널 수. - project_pos_dim (
int, 선택 사항, 기본값 -1) — 투영할 위치 인코딩의 차원입니다. -1인 경우 투영이 적용되지 않습니다. - **position_encoding_kwargs (
Dict, 선택) — 위치 인코딩을 위한 키워드 인자입니다.
Perceiver Encoder를 위한 오디오 전처리.
PerceiverMultimodalPreprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverMultimodalPreprocessor
< source >( modalities: Mappingmask_probs: collections.abc.Mapping[str, float] | None = Nonemin_padding_size: int = 2 )
Perceiver Encoder를 위한 멀티모달 전처리.
각 모달리티의 입력은 전처리된 후, 학습 가능한 위치 임베딩으로 패딩되어 동일한 채널 수를 갖도록 합니다.
PerceiverProjectionDecoder
클래스 transformers.models.perceiver.modeling_perceiver.PerceiverProjectionDecoder
< source >( config )
매개변수
- config (PerceiverConfig) — 모델 구성입니다.
베이스라인 예측 디코더(크로스 어텐션 없음).
PerceiverBasicDecoder
class transformers.models.perceiver.modeling_perceiver.PerceiverBasicDecoder
< source >( config: PerceiverConfigoutput_num_channels: intposition_encoding_type: str | None = 'trainable'output_index_dims: int | None = Nonenum_channels: int | None = 128subsampled_index_dims: int | None = Noneqk_channels: int | None = Nonev_channels: int | None = Nonenum_heads: int | None = 1widening_factor: int | None = 1use_query_residual: bool | None = Falseconcat_preprocessed_input: bool | None = Falsefinal_project: bool | None = Trueposition_encoding_only: bool | None = False**position_encoding_kwargs )
매개변수
- config ([PerceiverConfig]) — 모델 구성입니다.
- output_num_channels (
int, 선택) — 출력의 채널 수입니다. final_project가True로 설정된 경우에만 사용됩니다. - position_encoding_type (
str, 선택 사항, 기본값 “trainable”) — 사용할 위치 인코딩의 유형입니다. “trainable”, “fourier”, “none” 중 하나를 지정할 수 있습니다. - output_index_dims (
int, 선택 사항) — 출력 쿼리의 차원 수입니다. ‘position_encoding_type’ == ‘none’인 경우 무시됩니다. - num_channels (
int, 선택 사항, 기본값 128) — 디코더 쿼리의 채널 수입니다. ‘position_encoding_type’ == ‘none’인 경우 무시됩니다. - qk_channels (
int, 선택 사항) — 크로스 어텐션 레이어에서 쿼리와 키의 채널 수입니다. - v_channels (
int, 선택 사항) — 크로스 어텐션 레이어의 값에 포함된 채널 수입니다. - num_heads (
int, 선택 사항, 기본값 1) — 크로스 어텐션 레이어의 어텐션 헤드 수입니다. - widening_factor (
int, 선택 사항, 기본값 1) — 크로스 어텐션 레이어의 확장 계수입니다. - use_query_residual (
bool, 선택 사항, 기본값False) — cross-attention 레이어의 출력과 query 사이에 residual 연결을 사용할지 여부입니다. - concat_preprocessed_input (
bool, 선택 사항, 기본값False) — 전처리된 입력을 쿼리에 연결할지 여부입니다. - final_project (
bool, 선택 사항, 기본값True) — 크로스 어텐션 레이어의 출력을 대상 차원으로 투영할지 여부. - position_encoding_only (
bool, 선택 사항, 기본값False) — 이 클래스를 출력 쿼리 정의에만 사용할지 여부입니다.
Cross-attention 기반 decoder. 이 클래스는 latents가 keys와 values를 생성하는 cross-attention 연산을 사용하여 latents의 최종 hidden states를 디코딩하는 데 사용할 수 있습니다.
이 클래스의 출력 형식은 출력 쿼리(또는 디코더 쿼리라고도 함)를 어떻게 정의하는지에 따라 달라집니다.
PerceiverClassificationDecoder
class transformers.models.perceiver.modeling_perceiver.PerceiverClassificationDecoder
< source >( config**decoder_kwargs )
매개변수
- config (PerceiverConfig) — 모델 구성입니다.
Cross-attention 기반 분류 decoder. logit 출력을 위한 PerceiverBasicDecoder의 경량 래퍼입니다.
(batch_size, num_latents, d_latents) 형태의 Perceiver encoder 출력을 (batch_size, num_labels) 형태의 텐서로 변환합니다. queries는 (batch_size, 1, num_labels) 형태입니다.
PerceiverOpticalFlowDecoder
class transformers.models.perceiver.modeling_perceiver.PerceiverOpticalFlowDecoder
< source >( configoutput_image_shapeoutput_num_channels = 2rescale_factor = 100.0**decoder_kwargs )
Cross-attention 기반 광학 흐름 디코더.
PerceiverBasicVideoAutoencodingDecoder
class transformers.models.perceiver.modeling_perceiver.PerceiverBasicVideoAutoencodingDecoder
< source >( config: PerceiverConfigoutput_shape: listposition_encoding_type: str**decoder_kwargs )
Cross-attention 기반 video-autoencoding decoder입니다. PerceiverBasicDecoder의 경량 wrapper로, video reshaping 로직을 포함합니다.
PerceiverMultimodalDecoder
class transformers.models.perceiver.modeling_perceiver.PerceiverMultimodalDecoder
< source >( config: PerceiverConfigmodalities: dictnum_outputs: intoutput_num_channels: intmin_padding_size: int | None = 2subsampled_index_dims: dict[str, transformers.models.perceiver.modeling_perceiver.PerceiverAbstractDecoder] | None = None**decoder_kwargs )
매개변수
- config ([PerceiverConfig]) — 모델 구성입니다.
- modalities (
dict[str, PerceiverAbstractDecoder]) — 모달리티 이름을 해당 모달리티의 디코더로 매핑하는 사전. - num_outputs (
int) — 디코더의 출력 개수입니다. - output_num_channels (
int) — 출력의 채널 수입니다. - min_padding_size (
int, 선택 사항, 기본값 2) — 모든 모달리티에 대한 최소 패딩 크기입니다. 최종 출력의 num_channels는 모든 모달리티 중 최대 채널 수에 min_padding_size를 더한 값이 됩니다. - subsampled_index_dims (
dict[str, PerceiverAbstractDecoder], 선택 사항) — 모달리티 이름을 해당 모달리티의 decoder query에 사용할 하위 샘플링된 인덱스 차원으로 매핑하는 사전입니다.
유니모달 디코더를 조합하여 멀티모달 디코딩을 수행합니다. 생성자의 modalities 인자는 모달리티 이름을 해당 모달리티의 디코더로 매핑하는 사전입니다. 이 디코더는 해당 모달리티의 쿼리를 구성하는 데 사용됩니다. 모달리티별 쿼리는 학습 가능한 모달리티별 패딩 파라미터로 패딩된 후, 시간 차원 방향으로 연결됩니다.
다음으로, 모든 모달리티에 걸쳐 공유되는 cross attention 연산이 있습니다.
PerceiverProjectionPostprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverProjectionPostprocessor
< source >( in_channels: intout_channels: int )
Perceiver의 투사 후처리입니다. 디코더 출력의 채널을 더 낮은 차원으로 투사하는 데 사용할 수 있습니다.
PerceiverAudioPostprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverAudioPostprocessor
< source >( config: PerceiverConfigin_channels: intpostproc_type: str = 'patches' )
Perceiver의 오디오 후처리. 디코더 출력을 오디오 특징으로 변환하는 데 사용할 수 있습니다.
PerceiverClassificationPostprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverClassificationPostprocessor
< source >( config: PerceiverConfigin_channels: int )
Perceiver의 분류 후처리. 디코더 출력을 분류 로짓으로 변환하는 데 사용할 수 있습니다.
PerceiverMultimodalPostprocessor
class transformers.models.perceiver.modeling_perceiver.PerceiverMultimodalPostprocessor
< source >( modalities: Mappinginput_is_dict: bool = False )
Perceiver를 위한 멀티모달 후처리. 모달리티별 후처리기를 단일 후처리기로 결합하는 데 사용할 수 있습니다.
PerceiverModel
class transformers.PerceiverModel
< source >( config: PerceiverConfigdecoder: typing.Optional[ForwardRef('PerceiverAbstractDecoder')] = Noneinput_preprocessor: Callable = Noneoutput_postprocessor: Callable = None )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
- decoder (
PerceiverDecoder, 선택 사항) — 잠재 표현을 작업 예측으로 변환하는 디코더 모듈입니다. - input_preprocessor (
PreprocessorType, 선택 사항) — 모델을 위해 원시 입력을 텐서로 인코딩하는 Preprocessor입니다. - output_postprocessor (
PostprocessorType, 선택 사항) — 모델 출력을 최종 예측으로 변환하는 Postprocessor입니다.
Perceiver: 확장 가능하고 완전한 attention 기반 아키텍처
모델의 forward에서
interpolate_pos_encoding을True로 설정하면, 학습에 사용된 해상도보다 높은 해상도의 이미지로 Perceiver를 fine-tune할 수 있습니다. 이렇게 하면 사전 학습된 position embeddings이 더 높은 해상도에 맞게 보간됩니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: Tensorattention_mask: typing.Optional[torch.Tensor] = Nonesubsampled_output_points: dict[str, torch.Tensor] | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinterpolate_pos_encoding: bool = Falsereturn_dict: bool | None = None**kwargs ) → PerceiverModelOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor) — perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- subsampled_output_points (
dict[str, torch.Tensor], 선택 사항) — 디코더의 쿼리로 사용되는 텐서 딕셔너리입니다. 디코더는 이러한 쿼리를 모델의 잠재 표현(latent representation)으로 매핑합니다. 예를 들어, 특정 이미지 패치만 디코딩하는 경우와 같이 부분 샘플링(subsampled) 디코딩에 사용됩니다. - output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - interpolate_pos_encoding (
bool, 선택 사항, 기본값False) — 사전 학습된 위치 인코딩을 보간할지 여부입니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
PerceiverModelOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverModelOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(PerceiverConfig)과 입력에 따라 다양한 요소를 포함합니다.
PerceiverModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
logits (
torch.Tensor, shape(batch_size, num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import PerceiverConfig, PerceiverTokenizer, PerceiverImageProcessor, PerceiverModel
>>> from transformers.models.perceiver.modeling_perceiver import (
... PerceiverTextPreprocessor,
... PerceiverImagePreprocessor,
... PerceiverClassificationDecoder,
... )
>>> import torch
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> # EXAMPLE 1: using the Perceiver to classify texts
>>> # - we define a TextPreprocessor, which can be used to embed tokens
>>> # - we define a ClassificationDecoder, which can be used to decode the
>>> # final hidden states of the latents to classification logits
>>> # using trainable position embeddings
>>> config = PerceiverConfig()
>>> preprocessor = PerceiverTextPreprocessor(config)
>>> decoder = PerceiverClassificationDecoder(
... config,
... num_channels=config.d_latents,
... trainable_position_encoding_kwargs=dict(num_channels=config.d_latents, index_dims=1),
... use_query_residual=True,
... )
>>> model = PerceiverModel(config, input_preprocessor=preprocessor, decoder=decoder)
>>> # you can then do a forward pass as follows:
>>> tokenizer = PerceiverTokenizer()
>>> text = "hello world"
>>> inputs = tokenizer(text, return_tensors="pt").input_ids
>>> with torch.no_grad():
... outputs = model(inputs=inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 2]
>>> # to train, one can train the model using standard cross-entropy:
>>> criterion = torch.nn.CrossEntropyLoss()
>>> labels = torch.tensor([1])
>>> loss = criterion(logits, labels)
>>> # EXAMPLE 2: using the Perceiver to classify images
>>> # - we define an ImagePreprocessor, which can be used to embed images
>>> config = PerceiverConfig(image_size=224)
>>> preprocessor = PerceiverImagePreprocessor(
... config,
... prep_type="conv1x1",
... spatial_downsample=1,
... out_channels=256,
... position_encoding_type="trainable",
... concat_or_add_pos="concat",
... project_pos_dim=256,
... trainable_position_encoding_kwargs=dict(
... num_channels=256,
... index_dims=config.image_size**2,
... ),
... )
>>> model = PerceiverModel(
... config,
... input_preprocessor=preprocessor,
... decoder=PerceiverClassificationDecoder(
... config,
... num_channels=config.d_latents,
... trainable_position_encoding_kwargs=dict(num_channels=config.d_latents, index_dims=1),
... use_query_residual=True,
... ),
... )
>>> # you can then do a forward pass as follows:
>>> image_processor = PerceiverImageProcessor()
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> inputs = image_processor(image, return_tensors="pt").pixel_values
>>> with torch.no_grad():
... outputs = model(inputs=inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 2]
>>> # to train, one can train the model using standard cross-entropy:
>>> criterion = torch.nn.CrossEntropyLoss()
>>> labels = torch.tensor([1])
>>> loss = criterion(logits, labels)PerceiverForMaskedLM
class transformers.PerceiverForMaskedLM
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Perceiver를 masked language modeling에 사용하는 예시.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = Noneinput_ids: typing.Optional[torch.Tensor] = None**kwargs ) → PerceiverMaskedLMOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, 선택 사항) — Perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항) — 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[-100, 0, ..., config.vocab_size]범위여야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, 손실은 라벨이[0, ..., config.vocab_size]범위에 있는 토큰에 대해서만 계산됩니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부. - input_ids (
torch.Tensor의 shape(batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
반환값
PerceiverMaskedLMOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverMaskedLMOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우, 구성(PerceiverConfig)과 입력에 따라 다양한 요소를 포함합니다.
PerceiverForMaskedLM의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — Masked language modeling (MLM) loss.logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import AutoTokenizer, PerceiverForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("deepmind/language-perceiver")
>>> model = PerceiverForMaskedLM.from_pretrained("deepmind/language-perceiver")
>>> # training
>>> text = "This is an incomplete sentence where some words are missing."
>>> inputs = tokenizer(text, padding="max_length", return_tensors="pt")
>>> # mask " missing."
>>> inputs["input_ids"][0, 52:61] = tokenizer.mask_token_id
>>> labels = tokenizer(text, padding="max_length", return_tensors="pt").input_ids
>>> outputs = model(**inputs, labels=labels)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
19.87
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 2048, 262]
>>> # inference
>>> text = "This is an incomplete sentence where some words are missing."
>>> encoding = tokenizer(text, padding="max_length", return_tensors="pt")
>>> # mask bytes corresponding to " missing.". Note that the model performs much better if the masked span starts with a space.
>>> encoding["input_ids"][0, 52:61] = tokenizer.mask_token_id
>>> # forward pass
>>> with torch.no_grad():
... outputs = model(**encoding)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 2048, 262]
>>> masked_tokens_predictions = logits[0, 52:61].argmax(dim=-1).tolist()
>>> tokenizer.decode(masked_tokens_predictions)
' missing.'PerceiverForSequenceClassification
클래스 transformers.PerceiverForSequenceClassification
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Perceiver를 텍스트 분류에 사용하는 예시.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = Noneinput_ids: typing.Optional[torch.Tensor] = None**kwargs ) → PerceiverClassifierOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, 선택 사항) — Perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다.config.num_labels == 1인 경우 회귀 손실(Mean-Square loss)이 계산되고,config.num_labels > 1인 경우 분류 손실(Cross-Entropy)이 계산됩니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부. - input_ids (
torch.Tensor의 shape(batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
반환값
PerceiverClassifierOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverClassifierOutput(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(PerceiverConfig)과 입력에 따라 다양한 요소를 포함합니다.
PerceiverForSequenceClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import AutoTokenizer, PerceiverForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("deepmind/language-perceiver")
>>> model = PerceiverForSequenceClassification.from_pretrained("deepmind/language-perceiver")
>>> text = "hello world"
>>> inputs = tokenizer(text, return_tensors="pt").input_ids
>>> outputs = model(inputs=inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 2]PerceiverForImageClassificationLearned
class transformers.PerceiverForImageClassificationLearned
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
ImageNet과 같은 작업에 Perceiver를 이미지 분류용으로 사용하는 예시입니다.
이 모델은 학습된 위치 임베딩을 사용합니다. 즉, 이 모델에는 이미지의 구조에 대한 특권 정보가 제공되지 않습니다. 논문에서 보여주었듯이, 이 모델은 ImageNet에서 top-1 정확도 72.7를 달성할 수 있습니다.
PerceiverForImageClassificationLearned는 입력 이미지를 전처리하기 위해 PerceiverImagePreprocessor(prep_type="conv1x1" 사용)를, 그리고 PerceiverModel의 잠재 표현을 분류 로짓으로 디코딩하기 위해 PerceiverClassificationDecoder를 사용합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool = Falsereturn_dict: bool | None = Nonepixel_values: typing.Optional[torch.Tensor] = None**kwargs ) → PerceiverClassifierOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, 선택 사항) — Perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 이미지 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다.config.num_labels == 1인 경우 회귀 손실(평균 제곱 오차)이 계산되고,config.num_labels > 1인 경우 분류 손실(교차 엔트로피)이 계산됩니다. - interpolate_pos_encoding (
bool, 선택 사항, 기본값False) — 사전 학습된 위치 인코딩을 보간할지 여부입니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부. - pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 PerceiverImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 PerceiverImageProcessor.call()를 참조하세요 (processor_class는 이미지 처리에 PerceiverImageProcessor를 사용합니다).
반환값
PerceiverClassifierOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverClassifierOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우, 구성(PerceiverConfig)과 입력에 따라 다양한 요소로 구성됩니다.
PerceiverForImageClassificationLearned의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import AutoImageProcessor, PerceiverForImageClassificationLearned
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> image_processor = AutoImageProcessor.from_pretrained("deepmind/vision-perceiver-learned")
>>> model = PerceiverForImageClassificationLearned.from_pretrained("deepmind/vision-perceiver-learned")
>>> inputs = image_processor(images=image, return_tensors="pt").pixel_values
>>> outputs = model(inputs=inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 1000]
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_class_idx = logits.argmax(-1).item()
>>> print("Predicted class:", model.config.id2label[predicted_class_idx])
Predicted class: tabby, tabby catPerceiverForImageClassificationFourier
클래스 transformers.PerceiverForImageClassificationFourier
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
ImageNet과 같은 작업에 Perceiver를 이미지 분류용으로 사용하는 예시입니다.
이 모델은 고정된 2D Fourier 위치 임베딩을 사용합니다. 논문에서 보인 바와 같이, 이 모델은 ImageNet에서 top-1 정확도 79.0을 달성하며, 대규모 데이터셋(예: JFT)으로 사전 학습하면 84.5를 달성합니다.
PerceiverForImageClassificationLearned는 입력 이미지를 전처리하기 위해 PerceiverImagePreprocessor(prep_type="pixels" 사용)를, 그리고 PerceiverModel의 잠재 표현을 분류 로짓으로 디코딩하기 위해 PerceiverClassificationDecoder를 사용합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = Nonepixel_values: typing.Optional[torch.Tensor] = None**kwargs ) → PerceiverClassifierOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, 선택 사항) — Perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 이미지 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다.config.num_labels == 1인 경우 회귀 손실(평균 제곱 오차)이 계산되고,config.num_labels > 1인 경우 분류 손실(교차 엔트로피)이 계산됩니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부. - pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 PerceiverImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 PerceiverImageProcessor.call()를 참조하세요 (processor_class는 이미지 처리에 PerceiverImageProcessor를 사용합니다).
반환값
PerceiverClassifierOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverClassifierOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(PerceiverConfig)과 입력에 따라 다양한 요소를 포함합니다.
PerceiverForImageClassificationFourier의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import AutoImageProcessor, PerceiverForImageClassificationFourier
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> image_processor = AutoImageProcessor.from_pretrained("deepmind/vision-perceiver-fourier")
>>> model = PerceiverForImageClassificationFourier.from_pretrained("deepmind/vision-perceiver-fourier")
>>> inputs = image_processor(images=image, return_tensors="pt").pixel_values
>>> outputs = model(inputs=inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 1000]
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_class_idx = logits.argmax(-1).item()
>>> print("Predicted class:", model.config.id2label[predicted_class_idx])
Predicted class: tabby, tabby catPerceiverForImageClassificationConvProcessing
클래스 transformers.PerceiverForImageClassificationConvProcessing
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
ImageNet과 같은 작업에 Perceiver를 이미지 분류용으로 사용하는 예시입니다.
이 모델은 2D conv+maxpool 전처리 네트워크를 사용합니다. 논문에서 제시된 바와 같이, 이 모델은 ImageNet에서 top-1 정확도 82.1을 달성할 수 있습니다.
PerceiverForImageClassificationLearned는 입력 이미지를 전처리하기 위해 PerceiverImagePreprocessor(prep_type="conv" 사용)를, 그리고 PerceiverModel의 잠재 표현을 분류 로짓으로 디코딩하기 위해 PerceiverClassificationDecoder를 사용합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = Nonepixel_values: typing.Optional[torch.Tensor] = None**kwargs ) → PerceiverClassifierOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, 선택 사항) — Perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 이미지 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다.config.num_labels == 1인 경우 회귀 손실(평균 제곱 오차)이 계산되고,config.num_labels > 1인 경우 분류 손실(교차 엔트로피)이 계산됩니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부. - pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 PerceiverImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 PerceiverImageProcessor.call()를 참조하세요 (processor_class는 이미지 처리에 PerceiverImageProcessor를 사용합니다).
반환값
PerceiverClassifierOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverClassifierOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(PerceiverConfig)과 입력에 따라 다양한 요소를 포함합니다.
PerceiverForImageClassificationConvProcessing의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import AutoImageProcessor, PerceiverForImageClassificationConvProcessing
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> image_processor = AutoImageProcessor.from_pretrained("deepmind/vision-perceiver-conv")
>>> model = PerceiverForImageClassificationConvProcessing.from_pretrained("deepmind/vision-perceiver-conv")
>>> inputs = image_processor(images=image, return_tensors="pt").pixel_values
>>> outputs = model(inputs=inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 1000]
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_class_idx = logits.argmax(-1).item()
>>> print("Predicted class:", model.config.id2label[predicted_class_idx])
Predicted class: tabby, tabby catPerceiverForOpticalFlow
class transformers.PerceiverForOpticalFlow
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Sintel, KITTI와 같은 작업을 위한 광류(optical flow)에서 Perceiver의 사용 예시입니다. PerceiverForOpticalFlow는 입력 이미지를 전처리하기 위해 PerceiverImagePreprocessor(prep_type=“patches” 사용)를, PerceiverModel의 잠재 표현을 디코딩하기 위해 PerceiverOpticalFlowDecoder를 사용합니다.
입력으로, 채널 차원 방향으로 2개의 연속 프레임을 연결하고 각 픽셀 주위의 3 x 3 패치를 추출합니다(각 픽셀당 3 x 3 x 3 x 2 = 54개의 값이 됩니다). 패치 내 각 픽셀의 위치를 인코딩하기 위해 고정된 Fourier position encodings를 사용합니다. 다음으로, Perceiver 인코더를 적용합니다. 디코딩 시에는 입력에 사용된 동일한 인코딩을 사용하여 잠재 표현을 쿼리합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = None**kwargs ) → PerceiverClassifierOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, 선택 사항) — Perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 광학 흐름 손실을 계산하는 데 사용되는 라벨. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
PerceiverClassifierOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverClassifierOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우, 구성(PerceiverConfig)과 입력에 따라 다양한 요소를 포함합니다.
PerceiverForOpticalFlow의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import PerceiverForOpticalFlow
>>> import torch
>>> model = PerceiverForOpticalFlow.from_pretrained("deepmind/optical-flow-perceiver")
>>> # in the Perceiver IO paper, the authors extract a 3 x 3 patch around each pixel,
>>> # leading to 3 x 3 x 3 = 27 values for each pixel (as each pixel also has 3 color channels)
>>> # patches have shape (batch_size, num_frames, num_channels, height, width)
>>> # the authors train on resolutions of 368 x 496
>>> patches = torch.randn(1, 2, 27, 368, 496)
>>> outputs = model(inputs=patches)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 368, 496, 2]PerceiverForMultimodalAutoencoding
클래스 transformers.PerceiverForMultimodalAutoencoding
< source >( config: PerceiverConfig )
매개변수
- config (PerceiverConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Kinetics-700와 같은 작업을 위해 Perceiver를 멀티모달(비디오) 오토인코딩에 사용하는 예시
PerceiverForMultimodalAutoencoding는 PerceiverMultimodalPreprocessor를 사용하여 이미지, 오디오, 클래스 라벨의 3가지 모달리티를 전처리합니다. 이 전처리기는 모달리티별 전처리기를 사용해 각 모달리티를 개별적으로 전처리한 뒤, 결과를 연결합니다. 학습 가능한 위치 임베딩을 사용해 각 모달리티를 동일한 채널 수로 패딩하여 시간 차원에서의 연결을 가능하게 합니다. 이후 Perceiver 인코더를 적용합니다.
PerceiverMultimodalDecoder는 PerceiverModel의 잠재 표현을 디코딩하는 데 사용됩니다. 이 디코더는 각 모달리티별 디코더를 사용하여 쿼리를 구성합니다. 디코더 쿼리는 전처리된 입력을 기반으로 생성됩니다. 그러나 단일 forward pass에서 전체 비디오를 오토인코딩하는 것은 계산적으로 비현실적이므로, 잠재 표현과의 cross-attention을 수행하기 위해 디코더 쿼리의 일부만 사용합니다. 이는 각 모달리티에 대한 하위 샘플링된 인덱스로 결정되며, PerceiverForMultimodalAutoencoding의 forward pass에 추가 입력으로 제공할 수 있습니다.
PerceiverMultimodalDecoder는 시간 차원을 따라 연결하기 위해 서로 다른 모달리티의 decoder queries를 동일한 채널 수로 패딩합니다. 그런 다음 PerceiverModel의 잠재 표현을 사용하여 cross-attention을 수행합니다.
마지막으로, ~models.perceiver.modeling_perceiver.PerceiverMultiModalPostprocessor는 이 텐서를 실제 비디오로 변환하는 데 사용됩니다. 먼저 출력을 각 모달리티로 분리한 다음, 각 모달리티에 해당하는 후처리기를 적용합니다.
평가 시 분류 라벨을 마스킹(즉, “label” 모달리티에 대해 단순히 0으로 이루어진 텐서를 제공하는 것)하면, 이 자동 인코딩 모델은 Kinetics 700 비디오 분류기가 됩니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonesubsampled_output_points: dict[str, torch.Tensor] | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = None**kwargs ) → PerceiverClassifierOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, 선택 사항) — Perceiver에 입력할 데이터입니다. 이미지, 텍스트, 오디오, 비디오 등 어떤 형식이든 가능합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- subsampled_output_points (
dict[str, torch.Tensor], 선택 사항) — 디코더의 쿼리로 사용되는 텐서 딕셔너리입니다. 디코더는 이러한 쿼리를 모델의 잠재 표현(latent representation)으로 매핑합니다. 예를 들어, 특정 이미지 패치만 디코딩하는 경우와 같이 부분 샘플링(subsampled) 디코딩에 사용됩니다. - output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 이미지 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다.config.num_labels == 1인 경우 회귀 손실(평균 제곱 오차)이 계산되고,config.num_labels > 1인 경우 분류 손실(교차 엔트로피)이 계산됩니다. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
PerceiverClassifierOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 PerceiverClassifierOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(PerceiverConfig)과 입력에 따라 다양한 요소로 구성됩니다.
PerceiverForMultimodalAutoencoding의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.hidden_states (
tuple[torch.Tensor], 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
cross_attentions (
tuple[torch.Tensor], 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
예:
>>> from transformers import PerceiverForMultimodalAutoencoding
>>> import torch
>>> import numpy as np
>>> # create multimodal inputs
>>> images = torch.randn((1, 16, 3, 224, 224))
>>> audio = torch.randn((1, 30720, 1))
>>> inputs = dict(image=images, audio=audio, label=torch.zeros((images.shape[0], 700)))
>>> model = PerceiverForMultimodalAutoencoding.from_pretrained("deepmind/multimodal-perceiver")
>>> # in the Perceiver IO paper, videos are auto-encoded in chunks
>>> # each chunk subsamples different index dimensions of the image and audio modality decoder queries
>>> nchunks = 128
>>> image_chunk_size = np.prod((16, 224, 224)) // nchunks
>>> audio_chunk_size = audio.shape[1] // model.config.samples_per_patch // nchunks
>>> # process the first chunk
>>> chunk_idx = 0
>>> subsampling = {
... "image": torch.arange(image_chunk_size * chunk_idx, image_chunk_size * (chunk_idx + 1)),
... "audio": torch.arange(audio_chunk_size * chunk_idx, audio_chunk_size * (chunk_idx + 1)),
... "label": None,
... }
>>> outputs = model(inputs=inputs, subsampled_output_points=subsampling)
>>> logits = outputs.logits
>>> list(logits["audio"].shape)
[1, 240]
>>> list(logits["image"].shape)
[1, 6272, 3]
>>> list(logits["label"].shape)
[1, 700]