Diffusers documentation

Transformer2DModel

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

and get access to the augmented documentation experience

to get started

Transformer2DModel

CompVis의 이미지형 데이터용 Transformer 모델로, Dosovitskiy et al.이 소개한 Vision Transformer를 기반으로 합니다. Transformer2DModel은 이산형(벡터 임베딩의 클래스) 또는 연속형(실제 임베딩) 입력을 받습니다.

입력이 연속인 경우:

  1. 입력을 투영하고 (batch_size, sequence_length, feature_dimension)으로 재구성합니다.
  2. Transformer 블록을 표준 방식으로 적용합니다.
  3. 이미지로 리사이즈합니다.

입력이 이산인 경우:

입력 클래스 중 하나가 마스킹된 잠재 픽셀임을 가정합니다. 노이즈가 제거된 이미지의 예측 클래스에는 마스킹된 픽셀에 대한 예측이 포함되지 않습니다. 노이즈가 제거된 이미지는 마스킹할 수 없기 때문입니다.

  1. 입력(잠재 픽셀 클래스)을 임베딩으로 변환하고 위치 임베딩을 적용합니다.
  2. Transformer 블록을 표준 방식으로 적용합니다.
  3. 노이즈가 없는 이미지의 클래스를 예측합니다.

Transformer2DModel

클래스 diffusers.Transformer2DModel

< >

( num_attention_heads: int = 16attention_head_dim: int = 88in_channels: int | None = Noneout_channels: int | None = Nonenum_layers: int = 1dropout: float = 0.0norm_num_groups: int = 32cross_attention_dim: int | None = Noneattention_bias: bool = Falsesample_size: int | None = Nonenum_vector_embeds: int | None = Nonepatch_size: int | None = Noneactivation_fn: str = 'geglu'num_embeds_ada_norm: int | None = Noneuse_linear_projection: bool = Falseonly_cross_attention: bool = Falsedouble_self_attention: bool = Falseupcast_attention: bool = Falsenorm_type: str = 'layer_norm'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05attention_type: str = 'default'caption_channels: int = Noneinterpolation_scale: float = Noneuse_additional_conditions: bool | None = None )

매개변수

  • num_attention_heads (int, 선택 사항, 기본값 16) — 멀티헤드 어텐션에 사용할 헤드의 수입니다.
  • attention_head_dim (int, 선택 사항, 기본값 88) — 각 헤드당 채널 수입니다.
  • in_channels (int, 선택 사항) — 입력과 출력의 채널 수(입력이 연속형인 경우 지정).
  • num_layers (int, 선택 사항, 기본값 1) — 사용할 Transformer 블록의 레이어 수입니다.
  • dropout (float, 선택 사항, 기본값 0.0) — 사용할 dropout 확률입니다.
  • cross_attention_dim (int, 선택 사항) — 사용할 encoder_hidden_states 차원의 수입니다.
  • sample_size (int, 선택 사항) — 잠재 이미지의 너비(입력이 discrete인 경우 지정). 위치 임베딩의 수를 학습하는 데 사용되므로 학습 중에 고정됩니다.
  • num_vector_embeds (int, 선택 사항) — 잠재 픽셀의 벡터 임베딩 클래스 수(입력이 이산인 경우 지정). 마스크된 잠재 픽셀의 클래스를 포함합니다.
  • activation_fn (str, 선택 사항, 기본값 "geglu") — feed-forward에서 사용할 활성화 함수.
  • num_embeds_ada_norm ( int, 선택 사항) — 학습 중에 사용된 diffusion step 수입니다. norm_layers 중 적어도 하나가 AdaLayerNorm. 이 값은 hidden states에 추가되는 임베딩의 수를 학습하는 데 사용되므로 학습 중에 고정됩니다.

    추론 중에 num_embeds_ada_norm보다 많은 단계로는 노이즈를 제거할 수 없습니다.

  • attention_bias (bool, 선택 사항) — TransformerBlocks의 attention에 bias 매개변수를 포함할지 구성합니다.

이미지형 데이터를 위한 2D Transformer 모델입니다.

forward

< >

( hidden_states: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Nonetimestep: typing.Optional[torch.LongTensor] = Noneadded_cond_kwargs: dict = Noneclass_labels: typing.Optional[torch.LongTensor] = Nonecross_attention_kwargs: dict = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )

매개변수

  • hidden_states (torch.LongTensor, 이산인 경우 (batch size, num latent pixels) 형태, 연속인 경우 torch.Tensor (batch size, channel, height, width) 형태) — 입력 hidden_states.
  • encoder_hidden_states ( torch.Tensor, shape (batch size, sequence len, embed dims), 선택 사항) — 크로스 어텐션 레이어에 사용되는 조건부 임베딩입니다. 지정되지 않으면 크로스 어텐션은 기본적으로 셀프 어텐션으로 동작합니다.
  • timestep ( torch.LongTensor, 선택 사항) — 디노이징 단계를 나타내는 데 사용됩니다. AdaLayerNorm에서 임베딩으로 적용될 선택적 timestep입니다.
  • class_labels ( torch.LongTensor, shape (batch size, num classes), 선택 사항) — 클래스 레이블 조건화를 나타내는 데 사용됩니다. AdaLayerZeroNorm에서 임베딩으로 적용될 선택적 클래스 레이블입니다.
  • cross_attention_kwargs ( dict[str, Any], 선택) — 지정된 경우 diffusers.models.attention_processor의 self.processor에서 정의된 AttentionProcessor로 전달되는 kwargs 사전입니다.
  • attention_mask ( torch.Tensor, 선택 사항) — encoder_hidden_states에 (batch, key_tokens) 모양의 어텐션 마스크가 적용됩니다. 1인 경우 마스크가 유지되고, 0인 경우 폐기됩니다. 마스크는 바이어스로 변환되어 “폐기” 토큰에 해당하는 어텐션 점수에 큰 음의 값을 더합니다.
  • encoder_attention_mask ( torch.Tensor, 선택 사항) — 에 적용되는 크로스 어텐션 마스크 encoder_hidden_states. 두 가지 형식을 지원합니다:
    • Mask (batch, sequence_length) True = 유지, False = 제거.
    • Bias (batch, 1, sequence_length) 0 = 유지, -10000 = 폐기.

    ndim == 2인 경우: 마스크로 해석된 후, 위 형식과 일관된 바이어스로 변환됩니다. 이 바이어스는 크로스 어텐션 점수에 추가됩니다.

  • return_dict (bool, 선택 사항, 기본값 True) — 단순 tuple 대신 UNet2DConditionOutput를 반환할지 여부.

Transformer2DModel의 forward 메서드입니다.

Transformer2DModelOutput

클래스 diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

매개변수

  • sample (torch.Tensor, shape (batch_size, num_channels, height, width) 또는 Transformer2DModel이 discrete인 경우 (batch size, num_vector_embeds - 1, num_latent_pixels)) — encoder_hidden_states 입력에 조건부인 hidden states 출력입니다. discrete인 경우, 노이즈가 제거된 latent 픽셀에 대한 확률 분포를 반환합니다.

Transformer2DModel의 출력입니다.

Update on GitHub