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

Um modelo Transformer para dados semelhantes a imagens da CompVis que é baseado no Vision Transformer introduzido por Dosovitskiy et al. O Transformer2DModel aceita entradas discretas (classes de embeddings de vetores) ou contínuas (embeddings reais).

Quando a entrada é contínua:

  1. Projete a entrada e redimensione-a para (batch_size, sequence_length, feature_dimension).
  2. Aplique os blocos Transformer da maneira padrão.
  3. Redimensionar para imagem.

Quando a entrada é discreta:

Pressupõe-se que uma das classes de entrada seja o pixel latente mascarado. As classes previstas da imagem sem ruído não contêm uma previsão para o pixel mascarado, pois a imagem sem ruído não pode ser mascarada.

  1. Converte a entrada (classes de pixels latentes) em embeddings e aplica embeddings posicionais.
  2. Aplique os blocos Transformer da maneira padrão.
  3. Preveja as classes da imagem sem ruído.

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 )

Parâmetros

  • num_attention_heads (int, opcional, padrão 16) — O número de cabeças a serem usadas para a atenção multi-cabeça.
  • attention_head_dim (int, opcional, padrão 88) — O número de canais em cada cabeça.
  • in_channels (int, opcional) — O número de canais na entrada e na saída (especifique se a entrada é contínua).
  • num_layers (int, opcional, padrão 1) — O número de camadas de blocos Transformer a serem usadas.
  • dropout (float, opcional, padrão 0.0) — A probabilidade de dropout a ser utilizada.
  • cross_attention_dim (int, opcional) — O número de dimensões de encoder_hidden_states a serem usadas.
  • sample_size (int, opcional) — A largura das imagens latentes (especifique se a entrada for discreta). Isso é fixo durante o treinamento, pois é usado para aprender um número de embeddings de posição.
  • num_vector_embeds (int, opcional) — O número de classes dos embeddings vetoriais dos pixels latentes (especifique se a entrada é discreta). Inclui a classe para o pixel latente mascarado.
  • activation_fn (str, opcional, padrão "geglu") — Função de ativação a ser usada no feed-forward.
  • num_embeds_ada_norm ( int, opcional) — O número de etapas de difusão usadas durante o treinamento. Passe se pelo menos um dos norm_layers for AdaLayerNorm. Isso é fixado durante o treinamento, pois é usado para aprender um número de embeddings que são adicionados aos estados ocultos.

    Durante a inferência, você pode desruidar por até, mas não mais do que, num_embeds_ada_norm etapas.

  • attention_bias (bool, opcional) — Configura se a atenção dos TransformerBlocks deve conter um parâmetro de viés.

Um modelo Transformer 2D para dados semelhantes a imagens.

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 )

Parâmetros

  • hidden_states (torch.LongTensor de forma (batch size, num latent pixels) se discreto, torch.Tensor de forma (batch size, channel, height, width) se contínuo) — Entrada hidden_states.
  • encoder_hidden_states ( torch.Tensor de forma (batch size, sequence len, embed dims), opcional) — Incorporações condicionais para a camada de atenção cruzada. Se não fornecidas, a atenção cruzada usa por padrão a autoatenção.
  • timestep ( torch.LongTensor, opcional) — Usado para indicar o passo de desruido. Timestep opcional a ser aplicado como um embedding em AdaLayerNorm.
  • class_labels ( torch.LongTensor de forma (batch size, num classes), opcional) — Usado para indicar rótulos de classe de condicionamento. Rótulos de classe opcionais a serem aplicados como um embedding em AdaLayerZeroNorm.
  • cross_attention_kwargs ( dict[str, Any], opcional) — Um dicionário de kwargs que, se especificado, é passado para o AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.
  • attention_mask ( torch.Tensor, opcional) — Uma máscara de atenção de forma (batch, key_tokens) é aplicada a encoder_hidden_states. Se 1, a máscara é mantida; caso contrário, se 0, ela é descartada. A máscara será convertida em um viés, que adiciona grandes valores negativos às pontuações de atenção correspondentes aos tokens “descartados”.
  • encoder_attention_mask ( torch.Tensor, opcional) — Máscara de atenção cruzada aplicada a encoder_hidden_states. Dois formatos suportados:
    • Máscara (batch, sequence_length) True = manter, False = descartar.
    • Viés (batch, 1, sequence_length) 0 = manter, -10000 = descartar.

    Se ndim == 2: será interpretado como uma máscara e, em seguida, convertido em um viés consistente com o formato acima. Esse viés será adicionado às pontuações de atenção cruzada.

  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um UNet2DConditionOutput em vez de uma tupla simples.

O método forward do Transformer2DModel.

Transformer2DModelOutput

classe diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Parâmetros

  • sample (torch.Tensor de forma (batch_size, num_channels, height, width) ou (batch size, num_vector_embeds - 1, num_latent_pixels) se Transformer2DModel for discreto) — A saída dos estados ocultos condicionada à entrada encoder_hidden_states. Se discreto, retorna distribuições de probabilidade para os pixels latentes sem ruído.

A saída de Transformer2DModel.

Update on GitHub