Diffusers documentation

Transformer2DModel

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[str, torch.Tensor] = Noneclass_labels: typing.Optional[torch.LongTensor] = Nonecross_attention_kwargs: dict[str, typing.Any] = 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