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 modelo Transformer para datos de tipo imagen de CompVis basado en el Vision Transformer introducido por Dosovitskiy et al. El Transformer2DModel acepta entradas discretas (clases de embeddings de vectores) o continuas (embeddings reales).

Cuando la entrada es continua:

  1. Proyecta la entrada y redimensiona su forma a (batch_size, sequence_length, feature_dimension).
  2. Aplica los bloques Transformer de la manera estándar.
  3. Redimensionar a imagen.

Cuando la entrada es discreta:

Se asume que una de las clases de entrada es el píxel latente enmascarado. Las clases predichas de la imagen sin ruido no contienen una predicción para el píxel enmascarado porque la imagen sin ruido no puede enmascararse.

  1. Convierte la entrada (clases de píxeles latentes) en incrustaciones y aplica incrustaciones posicionales.
  2. Aplica los bloques Transformer de la manera estándar.
  3. Predice las clases de la imagen sin ruido.

Transformer2DModel

clase 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, valor predeterminado 16) — El número de cabezas a utilizar para la atención multi-cabeza.
  • attention_head_dim (int, opcional, valor predeterminado 88) — El número de canales en cada cabeza.
  • in_channels (int, opcional) — El número de canales en la entrada y la salida (especifícalo si la entrada es continua).
  • num_layers (int, opcional, valor predeterminado 1) — El número de capas de bloques Transformer a utilizar.
  • dropout (float, opcional, valor predeterminado 0.0) — La probabilidad de dropout a utilizar.
  • cross_attention_dim (int, opcional) — El número de dimensiones de encoder_hidden_states a utilizar.
  • sample_size (int, opcional) — El ancho de las imágenes latentes (especifíquelo si la entrada es discreta). Esto se fija durante el entrenamiento, ya que se utiliza para aprender un número de embeddings de posición.
  • num_vector_embeds (int, opcional) — El número de clases de las incrustaciones vectoriales de los píxeles latentes (especifícalo si la entrada es discreta). Incluye la clase para el píxel latente enmascarado.
  • activation_fn (str, opcional, valor predeterminado "geglu") — Función de activación a utilizar en la red feed-forward.
  • num_embeds_ada_norm ( int, opcional) — El número de pasos de difusión utilizados durante el entrenamiento. Pásalo si al menos una de las norm_layers es AdaLayerNorm. Esto se fija durante el entrenamiento, ya que se utiliza para aprender un número de embeddings que se añaden a los estados ocultos.

    Durante la inferencia, puedes desruidar hasta un máximo de pasos no superior a num_embeds_ada_norm.

  • attention_bias (bool, opcional) — Configura si la atención de TransformerBlocks debe incluir un parámetro de sesgo.

Un modelo Transformer 2D para datos similares a imágenes.

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) si es discreto, torch.Tensor de forma (batch size, channel, height, width) si es continuo) — Entrada hidden_states.
  • encoder_hidden_states ( torch.Tensor de forma (batch size, sequence len, embed dims), opcional) — Incrustados condicionales para la capa de atención cruzada. Si no se proporcionan, la atención cruzada predeterminada es la autoatención.
  • timestep ( torch.LongTensor, opcional) — Se utiliza para indicar el paso de desruido. Paso temporal opcional que se aplica como un embedding en AdaLayerNorm.
  • class_labels ( torch.LongTensor de forma (batch size, num classes), opcional) — Se utiliza para indicar las etiquetas de clase de condicionamiento. Etiquetas de clase opcionales que se aplican como un embedding en AdaLayerZeroNorm.
  • cross_attention_kwargs ( dict[str, Any], opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • attention_mask ( torch.Tensor, opcional) — Una máscara de atención de forma (batch, key_tokens) se aplica a encoder_hidden_states. Si 1, la máscara se conserva; en caso contrario, si 0, se descarta. La máscara se convertirá en un sesgo, que añade valores negativos grandes a las puntuaciones de atención correspondientes a los tokens “descartados”.
  • encoder_attention_mask ( torch.Tensor, opcional) — Máscara de atención cruzada aplicada a encoder_hidden_states. Se admiten dos formatos:
    • Máscara (batch, sequence_length) True = conservar, False = descartar.
    • Sesgo (batch, 1, sequence_length) 0 = conservar, -10000 = descartar.

    Si ndim == 2: se interpretará como una máscara y luego se convertirá en un sesgo coherente con el formato anterior. Este sesgo se sumará a las puntuaciones de atención cruzada.

  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un UNet2DConditionOutput en lugar de una tupla simple.

El método forward de Transformer2DModel.

Transformer2DModelOutput

clase diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Parámetros

  • sample (torch.Tensor de forma (batch_size, num_channels, height, width) o (batch size, num_vector_embeds - 1, num_latent_pixels) si Transformer2DModel es discreto) — La salida de estados ocultos condicionada a la entrada encoder_hidden_states. Si es discreto, devuelve distribuciones de probabilidad para los píxeles latentes sin ruido.

La salida de Transformer2DModel.

Update on GitHub