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

来自 CompVis 的用于类图像数据的 Transformer 模型,基于 Dosovitskiy 等人提出的 Vision Transformer。Transformer2DModel 接受离散(向量嵌入的类别)或连续(实际嵌入)输入。

当输入为连续时:

  1. 将输入进行投影,并将其重塑为 (batch_size, sequence_length, feature_dimension)。
  2. 以标准方式应用 Transformer 块。
  3. 重塑为图像。

当输入为离散时:

假设其中一个输入类别是掩码潜在像素。未加噪图像的预测类别中不包含对掩码像素的预测,因为未加噪图像无法被掩码。

  1. 将输入(潜在像素的类别)转换为嵌入,并应用位置嵌入。
  2. 以标准方式应用 Transformer 块。
  3. 预测未加噪图像的类别。

Transformer2DModel

class 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 )

参数

  • num_attention_heads (int,可选,默认为 16) — 多头注意力机制中使用的注意力头数量。
  • attention_head_dim (int,可选,默认值为 88) — 每个注意力头中的通道数。
  • in_channels (int, 可选) — 输入和输出的通道数(如果输入是连续的,请指定)。
  • num_layers (int,可选,默认为 1) — 要使用的 Transformer 块层数。
  • dropout (float,可选,默认值为 0.0) — 要使用的 dropout 概率。
  • cross_attention_dim (int,可选) — 要使用的 encoder_hidden_states 维度数量。
  • sample_size (int, 可选) — 潜在图像的宽度(如果输入为 discrete,则需指定)。 由于该值用于学习位置嵌入的数量,因此在训练过程中是固定的。
  • num_vector_embeds (int, 可选) — 潜在像素向量嵌入的类别数(如果输入是离散的,请指定)。 包括用于掩码潜在像素的类别。
  • activation_fn (str,可选,默认为 "geglu") — 前馈网络中使用的激活函数。
  • num_embeds_ada_norm ( int, 可选) — 训练期间使用的扩散步数。如果至少有一个 norm_layers 是 AdaLayerNorm. 由于该值用于确定要添加到隐藏状态中的嵌入数量,因此在训练期间是固定的。

    在推理过程中,你可以进行去噪,但步数不能超过 num_embeds_ada_norm。

  • attention_bias (bool, 可选) — 配置 TransformerBlocks 的注意力机制是否包含偏置参数。

用于类图像数据的 2D Transformer 模型。

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 )

参数

  • hidden_states(如果为离散值,则为形状 (batch size, num latent pixels) 的 torch.LongTensor;如果为连续值,则为形状 (batch size, channel, height, width) 的 torch.Tensor) — 输入 hidden_states。
  • encoder_hidden_states ( torch.Tensor,形状为 (batch size, sequence len, embed dims),可选) — 用于交叉注意力层的条件嵌入。如果未提供,交叉注意力将默认为自注意力。
  • timestep ( torch.LongTensor, 可选) — 用于指示去噪步骤。作为嵌入应用于 AdaLayerNorm 的可选时间步。
  • class_labels ( torch.LongTensor,形状为 (batch size, num classes),可选) — 用于指示类别标签条件。作为嵌入应用于 AdaLayerZeroNorm 的可选类别标签。
  • cross_attention_kwargs ( dict[str, Any], 可选) — 一个 kwargs 字典,如果指定,将传递给 diffusers.models.attention_processor 中 self.processor 下定义的 AttentionProcessor。
  • attention_mask ( torch.Tensor, 可选) — 形状为 (batch, key_tokens) 的注意力掩码,应用于 encoder_hidden_states。如果值为 1,则保留该掩码;如果值为 0,则丢弃。掩码将被转换为偏置,向对应于“丢弃”标记的注意力分数添加较大的负值。
  • encoder_attention_mask ( torch.Tensor, 可选) — 应用于 encoder_hidden_states. 支持两种格式:
    • Mask (batch, sequence_length) True = 保留,False = 丢弃。
    • Bias (batch, 1, sequence_length) 0 = 保留,-10000 = 丢弃。

    如果 ndim == 2:将被解释为掩码,然后转换为与上述格式一致的偏置。该偏置将加到交叉注意力分数上。

  • return_dict (bool,可选,默认为 True) — 是否返回 UNet2DConditionOutput 而不是普通元组。

Transformer2DModel 的前向方法。

Transformer2DModelOutput

类 diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

参数

  • sample(形状为 (batch_size, num_channels, height, width) 的 torch.Tensor,或者如果 Transformer2DModel 是离散的,则为 (batch size, num_vector_embeds - 1, num_latent_pixels))— 以 encoder_hidden_states 输入为条件的隐藏状态输出。如果是离散的,则返回未加噪潜在像素的概率分布。

Transformer2DModel 的输出。

Update on GitHub