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

Un modèle Transformer pour des données de type image de CompVis, basé sur le Vision Transformer introduit par Dosovitskiy et al. Le Transformer2DModel accepte des entrées discrètes (classes de vecteurs d'incorporation) ou continues (incorporations réelles).

Lorsque l'entrée est continue :

  1. Projeter l'entrée et la redimensionner en (batch_size, sequence_length, feature_dimension).
  2. Appliquez les blocs Transformer de manière standard.
  3. Redimensionner en image.

Lorsque l'entrée est discrète :

On suppose que l’une des classes d’entrée est le pixel latent masqué. Les classes prédites de l’image non bruitée ne contiennent pas de prédiction pour le pixel masqué, car l’image non bruitée ne peut pas être masquée.

  1. Convertir l'entrée (classes de pixels latents) en embeddings et appliquer des embeddings positionnels.
  2. Appliquez les blocs Transformer de manière standard.
  3. Prédit les classes de l'image non bruitée.

Transformer2DModel

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

Paramètres

  • num_attention_heads (int, facultatif, valeur par défaut 16) — Le nombre de têtes à utiliser pour l'attention multi-têtes.
  • attention_head_dim (int, facultatif, valeur par défaut : 88) — Le nombre de canaux dans chaque tête.
  • in_channels (int, facultatif) — Le nombre de canaux dans l'entrée et la sortie (à spécifier si l'entrée est continue).
  • num_layers (int, facultatif, par défaut 1) — Le nombre de blocs Transformer à utiliser.
  • dropout (float, facultatif, valeur par défaut 0.0) — La probabilité de dropout à utiliser.
  • cross_attention_dim (int, facultatif) — Le nombre de dimensions de encoder_hidden_states à utiliser.
  • sample_size (int, facultatif) — La largeur des images latentes (à spécifier si l’entrée est discrète). Cette valeur est fixée pendant l’entraînement, car elle est utilisée pour apprendre un nombre d’embeddings de position.
  • num_vector_embeds (int, facultatif) — Le nombre de classes des embeddings vectoriels des pixels latents (à spécifier si l’entrée est discrète). Inclut la classe du pixel latent masqué.
  • activation_fn (str, facultatif, par défaut "geglu") — Fonction d'activation à utiliser dans le réseau de neurones à propagation avant.
  • num_embeds_ada_norm ( int, facultatif) — Le nombre d'étapes de diffusion utilisées pendant l'entraînement. À transmettre si au moins une des norm_layers est AdaLayerNorm. Cette valeur est fixée pendant l'entraînement, car elle est utilisée pour apprendre un certain nombre d'embeddings qui sont ajoutés aux états cachés.

    Lors de l'inférence, vous pouvez effectuer le débruitage pendant au plus, mais pas plus de, num_embeds_ada_norm étapes.

  • attention_bias (bool, facultatif) — Configure si l'attention des TransformerBlocks doit contenir un paramètre de biais.

Un modèle Transformer 2D pour des données de type image.

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 )

Paramètres

  • hidden_states (torch.LongTensor de forme (batch size, num latent pixels) si discret, torch.Tensor de forme (batch size, channel, height, width) si continu) — Entrée hidden_states.
  • encoder_hidden_states ( torch.Tensor de forme (batch size, sequence len, embed dims), facultatif) — Embeddings conditionnels pour la couche d'attention croisée. S'ils ne sont pas fournis, l'attention croisée se comporte par défaut comme une auto-attention.
  • timestep ( torch.LongTensor, facultatif) — Utilisé pour indiquer l'étape de débruitage. Timestep facultatif à appliquer en tant qu'embedding dans AdaLayerNorm.
  • class_labels ( torch.LongTensor de forme (batch size, num classes), facultatif) — Utilisé pour indiquer les étiquettes de classe de conditionnement. Étiquettes de classe facultatives à appliquer sous forme d’embedding dans AdaLayerZeroNorm.
  • cross_attention_kwargs ( dict[str, Any], facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessor défini sous self.processor dans diffusers.models.attention_processor.
  • attention_mask ( torch.Tensor, facultatif) — Un masque d’attention de forme (batch, key_tokens) est appliqué à encoder_hidden_states. Si la valeur est 1, le masque est conservé ; sinon, si elle est 0, il est ignoré. Le masque est converti en biais, qui ajoute de grandes valeurs négatives aux scores d’attention correspondant aux jetons « ignorés ».
  • encoder_attention_mask ( torch.Tensor, facultatif) — Masque d'attention croisée appliqué aux encoder_hidden_states. Deux formats pris en charge :
    • Masque (batch, sequence_length) True = conserver, False = supprimer.
    • Biais (batch, 1, sequence_length) 0 = conserver, -10000 = supprimer.

    Si ndim == 2 : sera interprété comme un masque, puis converti en un biais cohérent avec le format ci-dessus. Ce biais sera ajouté aux scores d'attention croisée.

  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un UNet2DConditionOutput plutôt qu'un simple tuplet.

La méthode forward du Transformer2DModel.

Transformer2DModelOutput

classe diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Paramètres

  • sample (torch.Tensor de forme (batch_size, num_channels, height, width) ou (batch size, num_vector_embeds - 1, num_latent_pixels) si Transformer2DModel est discret) — Les états cachés en sortie, conditionnés par l'entrée encoder_hidden_states. Si discret, renvoie les distributions de probabilité pour les pixels latents non bruités.

La sortie de Transformer2DModel.

Update on GitHub