# Ideogram4Transformer2DModel

[Ideogram 4](https://github.com/ideogram-oss/ideogram-4)からの画像類似データ向けのtransformerです。

## Ideogram4Transformer2DModel[[diffusers.Ideogram4Transformer2DModel]]

#### diffusers.Ideogram4Transformer2DModel[[diffusers.Ideogram4Transformer2DModel]]

```python
diffusers.Ideogram4Transformer2DModel(in_channels: int = 128, num_layers: int = 34, attention_head_dim: int = 256, num_attention_heads: int = 18, intermediate_size: int = 12288, adaln_dim: int = 512, llm_features_dim: int = 53248, rope_theta: int = 5000000, mrope_section: tuple[int, int, int] = (24, 20, 20), norm_eps: float = 1e-05)
```

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

**パラメータ:**

in_channels (`int`、デフォルトは 128) : パッチ化後の潜在チャネル数 (`ae_channels * patch_size ** 2`)。

num_layers (`int`、デフォルトは 34) : Transformer ブロックの数。

attention_head_dim (`int`、デフォルトは 256) : 各アテンションヘッドの次元数。隠れ層の総サイズは `attention_head_dim * num_attention_heads` です。

num_attention_heads (`int`、デフォルトは 18) : アテンションヘッドの数。

intermediate_size (`int`、デフォルトは 12288) : 各ブロック内の SwiGLU MLP で使用されるフィードフォワードの隠れ層サイズ。

adaln_dim (`int`、デフォルトは 512) : AdaLN 変調によって消費される条件ベクトルの次元数。

llm_features_dim (`int`、デフォルトは 53248) : モデルに与えられるトークンごとのテキスト特徴量の次元数（通常、テキストエンコーダーの複数層の隠れ状態の連結）。

rope_theta (`int`、デフォルトは 5_000_000) : 多次元回転位置埋め込みで使用される基数です。

mrope_section (`tuple[int, int, int]`、デフォルトは`(24, 20, 20)`) : MRoPEの(t, h, w)各軸に割り当てられる周波数の数。

norm_eps (`float`、デフォルト値は 1e-5) : Transformer ブロック内の RMSNorm モジュールで使用する Epsilon。

Ideogram 4 パイプラインで使用される flow-matching transformer バックボーン。

Transformer は、マルチモーダルなテキストエンコーダーによって生成されるテキスト条件付けトークンと、パッチ化された画像潜在変数を含む単一のパックされたシーケンスに対して動作します。トークンごとのインジケーターによってこれらの2つの役割が区別され、`segment_ids`から導出されるブロック対角アテンションマスクにより、パックされたバッチ内で各サンプルが自分自身にのみアテンションを行うことが制限されます。

#### forward[[diffusers.Ideogram4Transformer2DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, encoder_hidden_states: Tensor, position_ids: Tensor, segment_ids: Tensor, indicator: Tensor, attention_kwargs: dict | None = None, return_dict: bool = True)
```

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

**パラメータ:**

hidden_states (`torch.Tensor`、shape `(batch_size, sequence_length, in_channels)`) : パッチ化されたノイズ付き画像トークンのパックされたシーケンスです。画像以外の位置は内部でマスクされます。

timestep (`torch.Tensor`、形状 `(batch_size,)` または `(batch_size, sequence_length)`) : `[0, 1]` における Flow-matching の時間（0 は純粋なノイズ、1 はクリーンなデータ）。

encoder_hidden_states (`torch.Tensor`、shape `(batch_size, sequence_length, llm_features_dim)`) : トークンごとのテキスト条件付け特徴量です。テキスト以外の位置は内部でマスクされます。

position_ids (`torch.Tensor`、shape `(batch_size, sequence_length, 3)`) : マルチ軸 RoPE が消費する `(t, h, w)` 座標。

segment_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`) : パックされたバッチ内のトークンごとのサンプル ID。`segment_id` を共有する位置は、互いにアテンションを行います。

indicator (`torch.Tensor`、形状 `(batch_size, sequence_length)`) : トークンごとの役割: `LLM_TOKEN_INDICATOR` (テキスト) または `OUTPUT_IMAGE_INDICATOR` (画像)。

attention_kwargs (`dict`, *任意*) : attention プロセッサに渡される kwargs の辞書です。`"scale"` エントリは、PEFT バックエンドが有効な場合に LoRA の重みをスケーリングします。

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

**戻り値:**

[Transformer2DModelOutput](/docs/diffusers/main/ja/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) または、最初の要素がモデルの compute dtype で `(batch_size, sequence_length, in_channels)` の形状を持つテンソルである `tuple`。`OUTPUT_IMAGE_INDICATOR` がタグ付けされた位置のみが、意味のある velocity 予測を持ちます。

パックされたシーケンスの画像トークン位置について、フローマッチングの速度を予測します。

