Diffusers 文件

Transformer2DModel

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Transformer2DModel

來自 CompVis 的影像資料 Transformer 模型,基於 Dosovitskiy et al. 引入的 Vision TransformerTransformer2DModel 接受離散(向量嵌入的類別)或連續(實際嵌入)輸入。

當輸入為 **連續** 時

  1. 將輸入投影並重塑為 `(batch_size, sequence_length, feature_dimension)`。
  2. 以標準方式應用 Transformer 塊。
  3. 重塑為影像。

當輸入為 **離散** 時

假定其中一個輸入類別是遮罩的潛在畫素。未加噪聲影像的預測類別不包含遮罩畫素的預測,因為未加噪聲影像不能被遮罩。

  1. 將輸入(潛在畫素的類別)轉換為嵌入並應用位置嵌入。
  2. 以標準方式應用 Transformer 塊。
  3. 預測未加噪聲影像的類別。

Transformer2DModel

class diffusers.Transformer2DModel

< >

( num_attention_heads: int = 16 attention_head_dim: int = 88 in_channels: typing.Optional[int] = None out_channels: typing.Optional[int] = None num_layers: int = 1 dropout: float = 0.0 norm_num_groups: int = 32 cross_attention_dim: typing.Optional[int] = None attention_bias: bool = False sample_size: typing.Optional[int] = None num_vector_embeds: typing.Optional[int] = None patch_size: typing.Optional[int] = None activation_fn: str = 'geglu' num_embeds_ada_norm: typing.Optional[int] = None use_linear_projection: bool = False only_cross_attention: bool = False double_self_attention: bool = False upcast_attention: bool = False norm_type: str = 'layer_norm' norm_elementwise_affine: bool = True norm_eps: float = 1e-05 attention_type: str = 'default' caption_channels: int = None interpolation_scale: float = None use_additional_conditions: typing.Optional[bool] = 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, 可選) — 潛在影像的寬度(如果輸入為 **離散** 則指定)。這在訓練期間是固定的,因為它用於學習多個位置嵌入。
  • num_vector_embeds (int, 可選) — 潛在畫素的向量嵌入類別數(如果輸入為 **離散** 則指定)。包括遮罩潛在畫素的類別。
  • activation_fn (str, 可選, 預設為 "geglu") — 前饋網路中使用的啟用函式。
  • num_embeds_ada_norm ( int, 可選) — 訓練期間使用的擴散步數。如果至少有一個歸一化層是 `AdaLayerNorm`,則傳入此引數。這在訓練期間是固定的,因為它用於學習新增到隱藏狀態的嵌入數量。

    在推理期間,您可以去噪多達(但不超過)`num_embeds_ada_norm` 步。

  • attention_bias (bool, 可選) — 配置 `TransformerBlocks` 注意力機制是否包含偏置引數。

用於影像資料的 2D Transformer 模型。

前向傳播

< >

( hidden_states: Tensor encoder_hidden_states: typing.Optional[torch.Tensor] = None timestep: typing.Optional[torch.LongTensor] = None added_cond_kwargs: typing.Dict[str, torch.Tensor] = None class_labels: typing.Optional[torch.LongTensor] = None cross_attention_kwargs: typing.Dict[str, typing.Any] = None attention_mask: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None return_dict: bool = True )

引數

  • hidden_states (形狀為 `(batch size, num latent pixels)` 的 torch.LongTensor,如果為離散;形狀為 `(batch size, channel, height, width)` 的 torch.Tensor,如果為連續) — 輸入的 `hidden_states`。
  • encoder_hidden_states ( 形狀為 `(batch size, sequence len, embed dims)` 的 torch.Tensor, 可選) — 用於交叉注意力層的條件嵌入。如果未給出,交叉注意力預設為自注意力。
  • timestep ( torch.LongTensor, 可選) — 用於指示去噪步驟。作為嵌入應用於 `AdaLayerNorm` 的可選時間步。
  • class_labels ( 形狀為 `(batch size, num classes)` 的 torch.LongTensor, 可選) — 用於指示類別標籤條件。作為嵌入應用於 `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`,則丟棄。掩碼將轉換為偏置,這將向與“丟棄”token 對應的注意力分數新增大的負值。
  • encoder_attention_mask ( torch.Tensor, 可選) — 應用於 `encoder_hidden_states` 的交叉注意力掩碼。支援兩種格式:

    • 掩碼 `(batch, sequence_length)` True = 保留,False = 丟棄。
    • 偏置 `(batch, 1, sequence_length)` 0 = 保留,-10000 = 丟棄。

    如果 `ndim == 2`:將被解釋為掩碼,然後轉換為與上述格式一致的偏置。此偏置將新增到交叉注意力分數中。

  • return_dict (bool, 可選, 預設為 True) — 是否返回 UNet2DConditionOutput 而不是純元組。

Transformer2DModel 的前向傳播方法。

Transformer2DModelOutput

class 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 的輸出。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.