Diffusers documentation
Transformer2DModel
Transformer2DModel
CompVis による、Dosovitskiy らが提唱した Vision Transformer に基づく、画像類似データ向けの Transformer モデルです。Transformer2DModel は、離散的な入力(ベクトル埋め込みのクラス)または連続的な入力(実際の埋め込み)を受け取ります。
入力が連続の場合:
- 入力を投影し、
(batch_size, sequence_length, feature_dimension)にリサイズします。 - Transformerブロックを標準的な方法で適用します。
- 画像にリサイズします。
入力が離散的な場合:
入力クラスの一つがマスクされた潜在ピクセルであることが前提です。ノイズ除去済みの画像の予測クラスには、マスクされたピクセルに対する予測が含まれていません。これは、ノイズ除去済みの画像はマスクできないためです。
- 入力(潜在ピクセルのクラス)を埋め込みに変換し、位置埋め込みを適用します。
- Transformerブロックを標準的な方法で適用します。
- ノイズ除去されていない画像のクラスを予測します。
Transformer2DModel
class 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 )
パラメータ
- 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
< 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 )
パラメータ
- 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
< source >( 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の出力です。