Diffusers documentation
Transformer2DModel
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 :
- Projeter l'entrée et la redimensionner en
(batch_size, sequence_length, feature_dimension). - Appliquez les blocs Transformer de manière standard.
- 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.
- Convertir l'entrée (classes de pixels latents) en embeddings et appliquer des embeddings positionnels.
- Appliquez les blocs Transformer de manière standard.
- Prédit les classes de l'image non bruitée.
Transformer2DModel
classe 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 )
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 deencoder_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 estAdaLayerNorm. 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 desTransformerBlocksdoit contenir un paramètre de biais.
Un modèle Transformer 2D pour des données de type image.
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 )
Paramètres
- hidden_states (
torch.LongTensorde forme(batch size, num latent pixels)si discret,torch.Tensorde forme(batch size, channel, height, width)si continu) — Entréehidden_states. - encoder_hidden_states (
torch.Tensorde 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 dansAdaLayerNorm. - class_labels (
torch.LongTensorde forme(batch size, num classes), facultatif) — Utilisé pour indiquer les étiquettes de classe de conditionnement. Étiquettes de classe facultatives à appliquer sous forme d’embedding dansAdaLayerZeroNorm. - cross_attention_kwargs (
dict[str, Any], facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans 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 est1, le masque est conservé ; sinon, si elle est0, 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é auxencoder_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. - Masque
- return_dict (
bool, facultatif, par défautTrue) — 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
< source >( sample: torch.Tensor )
Paramètres
- sample (
torch.Tensorde 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éeencoder_hidden_states. Si discret, renvoie les distributions de probabilité pour les pixels latents non bruités.
La sortie de Transformer2DModel.