# DiTTransformer2DModel

[DiT](https://huggingface.co/papers/2212.09748)からの画像類似データ向けの Transformer モデル。

## DiTTransformer2DModel[[diffusers.DiTTransformer2DModel]]

#### diffusers.DiTTransformer2DModel[[diffusers.DiTTransformer2DModel]]

```python
diffusers.DiTTransformer2DModel(num_attention_heads: int = 16, attention_head_dim: int = 72, in_channels: int = 4, out_channels: int | None = None, num_layers: int = 28, dropout: float = 0.0, norm_num_groups: int = 32, attention_bias: bool = True, sample_size: int = 32, patch_size: int = 2, activation_fn: str = 'gelu-approximate', num_embeds_ada_norm: int | None = 1000, upcast_attention: bool = False, norm_type: str = 'ada_norm_zero', norm_elementwise_affine: bool = False, norm_eps: float = 1e-05)
```

[ソース](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/dit_transformer_2d.py#L31)

**パラメータ:**

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

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

in_channels (int、デフォルトは 4) : 入力におけるチャネル数。

out_channels (int, 任意) : 出力のチャネル数。出力のチャネル数が入力と異なる場合は、このパラメータを指定してください。

num_layers (int, 任意, デフォルトは 28) : 使用する Transformer ブロックの層数。

dropout (float, 任意, デフォルト値は 0.0) : Transformer ブロック内で使用する dropout 確率。

norm_num_groups (int, 任意, デフォルト値は 32) : Transformer ブロック内のグループ正規化におけるグループ数。

attention_bias (bool, 任意, デフォルトは True) : Transformer ブロックの attention に bias パラメータを含めるかどうかを設定します。

sample_size (int、デフォルトは 32) : 潜在画像の幅です。このパラメータは学習中に固定されます。

patch_size (int, デフォルトは 2) : モデルが処理するパッチのサイズ。シーケンスでないデータを扱うアーキテクチャに関連します。

activation_fn (str, 任意, デフォルトは "gelu-approximate") : Transformerブロック内のフィードフォワードネットワークで使用する活性化関数。

num_embeds_ada_norm (int, 任意, デフォルト値は 1000) : AdaLayerNorm の埋め込み数。学習中に固定され、推論時の最大デノイジングステップ数に影響します。

upcast_attention (bool, 任意, デフォルトは False) : true の場合、パフォーマンスの向上を目的として、attention メカニズムの次元をアップキャストします。

norm_type (str, 任意, デフォルトは "ada_norm_zero") : 使用される正規化の種類を指定します。'ada_norm_zero' を指定できます。

norm_elementwise_affine (bool, 任意, デフォルトは False) : True の場合、正規化レイヤーで要素ごとのアフィンパラメータを有効にします。

norm_eps (float, 任意, デフォルト値は 1e-5) : 正規化レイヤーの分母に追加される小さな定数で、ゼロ除算を防ぐために使用されます。

DiT (https://huggingface.co/papers/2212.09748) で紹介された 2D Transformer モデル。

#### forward[[diffusers.DiTTransformer2DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: typing.Optional[torch.LongTensor] = None, class_labels: typing.Optional[torch.LongTensor] = None, cross_attention_kwargs: dict[str, typing.Any] = None, return_dict: bool = True)
```

[ソース](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/dit_transformer_2d.py#L148)

**パラメータ:**

hidden_states (`torch.LongTensor`（shape: `(batch size, num latent pixels)`、離散型の場合）、`torch.FloatTensor`（shape: `(batch size, channel, height, width)`、連続型の場合））: 入力となる`hidden_states`。

timestep ( `torch.LongTensor`, *任意*) : デノイジングステップを示すために使用します。`AdaLayerNorm`内で埋め込みとして適用される任意のタイムステップです。

class_labels ( `torch.LongTensor`、shape `(batch size, num classes)`、*任意*) : クラスラベルによる条件付けを示すために使用します。`AdaLayerZeroNorm`内で埋め込みとして適用される任意のクラスラベルです。

cross_attention_kwargs ( `dict[str, Any]`, *任意*) : 指定された場合、[diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) の `self.processor` で定義されている `AttentionProcessor` に渡される kwargs の辞書です。

return_dict (`bool`、*任意*、デフォルトは`True`) : プレーンなタプルではなく、[UNet2DConditionOutput](/docs/diffusers/main/ja/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.UNet2DConditionOutput)を返すかどうか。

**戻り値:**

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

[DiTTransformer2DModel](/docs/diffusers/main/ja/api/models/dit_transformer2d#diffusers.DiTTransformer2DModel)のforwardメソッドです。

