Diffusers documentation
Transformer2DModel
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:
- Proyecta la entrada y redimensiona su forma a
(batch_size, sequence_length, feature_dimension). - Aplica los bloques Transformer de la manera estándar.
- 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.
- Convierte la entrada (clases de píxeles latentes) en incrustaciones y aplica incrustaciones posicionales.
- Aplica los bloques Transformer de la manera estándar.
- Predice las clases de la imagen sin ruido.
Transformer2DModel
clase 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 )
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 deencoder_hidden_statesa 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 esAdaLayerNorm. 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 deTransformerBlocksdebe incluir un parámetro de sesgo.
Un modelo Transformer 2D para datos similares a imágenes.
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 )
Parámetros
- hidden_states (
torch.LongTensorde forma(batch size, num latent pixels)si es discreto,torch.Tensorde forma(batch size, channel, height, width)si es continuo) — Entradahidden_states. - encoder_hidden_states (
torch.Tensorde 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 enAdaLayerNorm. - class_labels (
torch.LongTensorde 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 enAdaLayerZeroNorm. - cross_attention_kwargs (
dict[str, Any], opcional) — Un diccionario de kwargs que, si se especifica, se pasa alAttentionProcessordefinido enself.processordentro de diffusers.models.attention_processor. - attention_mask (
torch.Tensor, opcional) — Una máscara de atención de forma(batch, key_tokens)se aplica aencoder_hidden_states. Si1, la máscara se conserva; en caso contrario, si0, 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 aencoder_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. - Máscara
- return_dict (
bool, opcional, valor predeterminadoTrue) — 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
< source >( sample: torch.Tensor )
Parámetros
- sample (
torch.Tensorde 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 entradaencoder_hidden_states. Si es discreto, devuelve distribuciones de probabilidad para los píxeles latentes sin ruido.
La salida de Transformer2DModel.