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 による、Dosovitskiy らが提唱した Vision Transformer に基づく、画像類似データ向けの 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") — feed-forward で使用する活性化関数。
  • num_embeds_ada_norm ( int, 省略可) — 学習中に使用される拡散ステップ数。 AdaLayerNorm. これは、隠れ状態に追加される埋め込みの数を学習するために使用されるため、学習中に固定されます。

    推論中、num_embeds_ada_normを超えるステップ数でのノイズ除去は行えません。

  • attention_bias (bool、省略可) — TransformerBlocks の attention に bias パラメータを含めるかどうかを設定します。

画像のようなデータ向けの2D Transformerモデル。

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 )

パラメータ

  • hidden_states(離散型の場合は torch.LongTensor(shape: (batch size, num latent pixels))、連続型の場合は torch.Tensor(shape: (batch size, channel, height, width)))— 入力となる 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]、省略可) — 指定された場合、diffusers.models.attention_processor で定義されている self.processor 配下の AttentionProcessor に渡される kwargs の辞書です。
  • attention_mask ( torch.Tensor, 任意) — encoder_hidden_states に適用される、形状が (batch, key_tokens) のアテンションマスクです。1 の場合はマスクが保持され、0 の場合は破棄されます。マスクはバイアスに変換され、「破棄」対象のトークンに対応するアテンションスコアに大きな負の値が加算されます。
  • encoder_attention_mask ( torch.Tensor, 省略可) — に適用されるクロスアテンションマスク encoder_hidden_states. サポートされる形式は2つです:
    • (batch, sequence_length) のマスク。True = 保持、False = 破棄。
    • Bias (batch, 1, sequence_length) 0 = 保持、-10000 = 破棄。

    ndim == 2の場合: マスクとして解釈され、上記の形式に一致するバイアスに変換されます。このバイアスはクロスアテンションスコアに追加されます。

  • return_dict (bool、任意、デフォルトは True) — プレーンなタプルではなく UNet2DConditionOutput を返すかどうか。

Transformer2DModelのforwardメソッドです。

Transformer2DModelOutput

クラス diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

パラメータ

  • sample (torch.Tensor、形状 (batch_size, num_channels, height, width)、または Transformer2DModel が離散型の場合 (batch size, num_vector_embeds - 1, num_latent_pixels)) — encoder_hidden_states 入力を条件とする隠れ状態の出力です。離散型の場合、ノイズ除去されていない潜在ピクセルの確率分布を返します。

Transformer2DModelの出力です。

Update on GitHub