Buckets:

hf-doc-build/doc / diffusers /main /ja /api /models /transformer2d.md
mishig's picture
|
download
raw
8.94 kB

Transformer2DModel

CompVis による、Dosovitskiy らが提唱した Vision Transformer に基づく、画像類似データ向けの Transformer モデルです。Transformer2DModel は、離散的な入力(ベクトル埋め込みのクラス)または連続的な入力(実際の埋め込み)を受け取ります。

入力が連続の場合:

  1. 入力を投影し、(batch_size, sequence_length, feature_dimension) にリサイズします。
  2. Transformerブロックを標準的な方法で適用します。
  3. 画像にリサイズします。

入力が離散的な場合:

入力クラスの一つがマスクされた潜在ピクセルであることが前提とされています。ノイズ除去済みの画像の予測クラスには、マスクされたピクセルに対する予測が含まれていません。これは、ノイズ除去済みの画像はマスクできないためです。

  1. 入力(潜在ピクセルのクラス)を埋め込みに変換し、位置埋め込みを適用します。
  2. Transformerブロックを標準的な方法で適用します。
  3. ノイズ除去されていない画像のクラスを予測します。

Transformer2DModel[[diffusers.Transformer2DModel]]

diffusers.Transformer2DModel[[diffusers.Transformer2DModel]]

diffusers.Transformer2DModel(num_attention_heads: int = 16, attention_head_dim: int = 88, in_channels: int | None = None, out_channels: int | None = None, num_layers: int = 1, dropout: float = 0.0, norm_num_groups: int = 32, cross_attention_dim: int | None = None, attention_bias: bool = False, sample_size: int | None = None, num_vector_embeds: int | None = None, patch_size: int | None = None, activation_fn: str = 'geglu', num_embeds_ada_norm: int | None = 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: bool | None = None)

ソース

パラメータ:

num_attention_heads (int, optional, デフォルトは 16) : マルチヘッドアテンションで使用するヘッド数。

attention_head_dim (int、任意、デフォルトは 88) : 各ヘッドのチャネル数。

in_channels (int, 任意) : 入力と出力のチャネル数(入力が連続の場合に指定します)。

num_layers (int、optional、デフォルトは 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, optional) : 学習中に使用される拡散ステップ数。AdaLayerNorm が norm_layers に少なくとも 1 つ含まれている場合に渡します。これは、隠れ状態に追加される埋め込みの数を学習するために使用されるため、学習中は固定されます。推論時には、num_embeds_ada_norm 以上のステップ数を超えない範囲で、最大でそのステップ数までノイズ除去を行うことができます。

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

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

forward[[diffusers.Transformer2DModel.forward]]

forward(hidden_states: Tensor, encoder_hidden_states: typing.Optional[torch.Tensor] = None, timestep: typing.Optional[torch.LongTensor] = None, added_cond_kwargs: dict[str, torch.Tensor] = None, class_labels: typing.Optional[torch.LongTensor] = None, cross_attention_kwargs: 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 (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、shape (batch size, num classes)、任意) : クラスラベルによる条件付けを示すために使用します。AdaLayerZeroNorm内で埋め込みとして適用される任意のクラスラベルです。

cross_attention_kwargs ( dict[str, Any], 任意) : 指定された場合、diffusers.models.attention_processor の self.processor で定義されている AttentionProcessor に渡される kwargs の辞書です。

attention_mask ( torch.Tensor, 任意) : 形状が (batch, key_tokens) のアテンションマスクが encoder_hidden_states に適用されます。1 の場合はマスクが保持され、0 の場合は破棄されます。マスクはバイアスに変換され、「破棄」トークンに対応するアテンションスコアに大きな負の値が加算されます。

encoder_attention_mask ( torch.Tensor, 任意) : encoder_hidden_states に適用されるクロスアテンションマスク。2つの形式をサポートします。 * マスク (batch, sequence_length) True = 保持、False = 破棄。 * バイアス (batch, 1, sequence_length) 0 = 保持、-10000 = 破棄。 ndim == 2 の場合、マスクとして解釈され、上記の形式と整合するバイアスに変換されます。このバイアスはクロスアテンションスコアに追加されます。

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

戻り値:

return_dict が True の場合、Transformer2DModelOutput が返され、それ以外の場合は、最初の要素がサンプルテンソルである tuple が返されます。

Transformer2DModelのforwardメソッドです。

Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)

ソース

パラメータ:

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

Transformer2DModelの出力です。

Xet Storage Details

Size:
8.94 kB
·
Xet hash:
360c8bd1abf4f6e5fc08e3335adf68975a61d3b72827ee15bcfc458fcbb6ff71

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.