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

Model Transformer untuk data seperti gambar dari CompVis yang didasarkan pada Vision Transformer yang diperkenalkan oleh Dosovitskiy et al. Transformer2DModel menerima input diskrit (kelas dari vektor embedding) atau kontinu (embedding aktual).

Ketika input bersifat kontinu:

  1. Proyeksikan input dan ubah bentuknya menjadi (batch_size, sequence_length, feature_dimension).
  2. Terapkan blok Transformer dengan cara standar.
  3. Bentuk ulang menjadi gambar.

Ketika input bersifat diskrit:

Diasumsikan salah satu kelas input adalah piksel laten yang dimasker. Kelas yang diprediksi dari gambar tanpa derau tidak memuat prediksi untuk piksel yang dimasker karena gambar tanpa derau tidak dapat dimasker.

  1. Konversi input (kelas piksel laten) menjadi embedding dan terapkan embedding posisional.
  2. Terapkan blok Transformer dengan cara standar.
  3. Memprediksi kelas dari gambar yang tidak berisik.

Transformer2DModel

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

Parameter

  • num_attention_heads (int, opsional, default 16) — Jumlah head yang digunakan untuk multi-head attention.
  • attention_head_dim (int, opsional, defaultnya 88) — Jumlah saluran di setiap head.
  • in_channels (int, opsional) — Jumlah channel pada input dan output (dinyatakan jika input bersifat kontinu).
  • num_layers (int, opsional, default 1) — Jumlah lapisan blok Transformer yang akan digunakan.
  • dropout (float, opsional, default 0.0) — Probabilitas dropout yang digunakan.
  • cross_attention_dim (int, opsional) — Jumlah dimensi encoder_hidden_states yang akan digunakan.
  • sample_size (int, opsional) — Lebar dari gambar laten (dinyatakan jika input bersifat diskrit). Ini tetap selama pelatihan karena digunakan untuk mempelajari sejumlah position embeddings.
  • num_vector_embeds (int, opsional) — Jumlah kelas dari vektor embedding piksel laten (dinyatakan jika input bersifat diskrit). Termasuk kelas untuk piksel laten yang dimasker.
  • activation_fn (str, opsional, defaultnya "geglu") — Fungsi aktivasi yang digunakan dalam feed-forward.
  • num_embeds_ada_norm ( int, opsional) — Jumlah langkah difusi yang digunakan selama pelatihan. Sertakan jika setidaknya salah satu dari norm_layers adalah AdaLayerNorm. Ini tetap selama pelatihan karena digunakan untuk mempelajari sejumlah embedding yang ditambahkan ke hidden states.

    Selama inferensi, Anda dapat melakukan denoising hingga, tetapi tidak lebih dari, num_embeds_ada_norm langkah.

  • attention_bias (bool, opsional) — Konfigurasi apakah perhatian pada TransformerBlocks harus memuat parameter bias.

Model Transformer 2D untuk data serupa gambar.

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 )

Parameter

  • hidden_states (torch.LongTensor dengan bentuk (batch size, num latent pixels) jika diskrit, torch.Tensor dengan bentuk (batch size, channel, height, width) jika kontinu) — Input hidden_states.
  • encoder_hidden_states ( torch.Tensor dengan bentuk (batch size, sequence len, embed dims), opsional) — Embedding kondisional untuk lapisan cross attention. Jika tidak diberikan, cross-attention secara default menggunakan self-attention.
  • timestep ( torch.LongTensor, opsional) — Digunakan untuk menunjukkan langkah denoising. Timestep opsional yang diterapkan sebagai embedding di AdaLayerNorm.
  • class_labels ( torch.LongTensor dengan bentuk (batch size, num classes), opsional) — Digunakan untuk menunjukkan kondisioning label kelas. Label kelas opsional yang akan diterapkan sebagai embedding di AdaLayerZeroNorm.
  • cross_attention_kwargs ( dict[str, Any], opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam diffusers.models.attention_processor.
  • attention_mask ( torch.Tensor, opsional) — Mask attention dengan bentuk (batch, key_tokens) diterapkan pada encoder_hidden_states. Jika 1, mask dipertahankan, sedangkan jika 0, mask dibuang. Mask akan dikonversi menjadi bias, yang menambahkan nilai negatif besar ke skor attention yang sesuai dengan token “buang”.
  • encoder_attention_mask ( torch.Tensor, opsional) — Mask cross-attention yang diterapkan pada encoder_hidden_states. Dua format didukung:
    • Mask (batch, sequence_length) True = simpan, False = buang.
    • Bias (batch, 1, sequence_length) 0 = pertahankan, -10000 = buang.

    Jika ndim == 2: akan diinterpretasikan sebagai mask, kemudian dikonversi menjadi bias yang konsisten dengan format di atas. Bias ini akan ditambahkan ke skor cross-attention.

  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan UNet2DConditionOutput alih-alih tuple biasa.

Metode forward dari Transformer2DModel.

Transformer2DModelOutput

kelas diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Parameter

  • sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width) atau (batch size, num_vector_embeds - 1, num_latent_pixels) jika Transformer2DModel bersifat diskrit) — Output hidden states yang dikondisikan pada input encoder_hidden_states. Jika diskrit, mengembalikan distribusi probabilitas untuk latent pixels yang tidak berisik.

Output dari Transformer2DModel.

Update on GitHub