Diffusers documentation
Transformer2DModel
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:
- Proyeksikan input dan ubah bentuknya menjadi
(batch_size, sequence_length, feature_dimension). - Terapkan blok Transformer dengan cara standar.
- 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.
- Konversi input (kelas piksel laten) menjadi embedding dan terapkan embedding posisional.
- Terapkan blok Transformer dengan cara standar.
- Memprediksi kelas dari gambar yang tidak berisik.
Transformer2DModel
kelas diffusers.Transformer2DModel
< source >( 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 dimensiencoder_hidden_statesyang 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 adalahAdaLayerNorm. 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_normlangkah. - attention_bias (
bool, opsional) — Konfigurasi apakah perhatian padaTransformerBlocksharus memuat parameter bias.
Model Transformer 2D untuk data serupa gambar.
forward
< source >( 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.LongTensordengan bentuk(batch size, num latent pixels)jika diskrit,torch.Tensordengan bentuk(batch size, channel, height, width)jika kontinu) — Inputhidden_states. - encoder_hidden_states (
torch.Tensordengan 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 diAdaLayerNorm. - class_labels (
torch.LongTensordengan bentuk(batch size, num classes), opsional) — Digunakan untuk menunjukkan kondisioning label kelas. Label kelas opsional yang akan diterapkan sebagai embedding diAdaLayerZeroNorm. - cross_attention_kwargs (
dict[str, Any], opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - attention_mask (
torch.Tensor, opsional) — Mask attention dengan bentuk(batch, key_tokens)diterapkan padaencoder_hidden_states. Jika1, mask dipertahankan, sedangkan jika0, 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 padaencoder_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. - Mask
- return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan UNet2DConditionOutput alih-alih tuple biasa.
Metode forward dari Transformer2DModel.
Transformer2DModelOutput
kelas diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parameter
- sample (
torch.Tensordengan 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 inputencoder_hidden_states. Jika diskrit, mengembalikan distribusi probabilitas untuk latent pixels yang tidak berisik.
Output dari Transformer2DModel.