# GlmImageTransformer2DModel

用于 2D 数据的 Diffusion Transformer 模型，来自 [GlmImageTransformer2DModel]（TODO）。

## GlmImageTransformer2DModel[[diffusers.GlmImageTransformer2DModel]]

#### diffusers.GlmImageTransformer2DModel[[diffusers.GlmImageTransformer2DModel]]

```python
diffusers.GlmImageTransformer2DModel(patch_size: int = 2, in_channels: int = 16, out_channels: int = 16, num_layers: int = 30, attention_head_dim: int = 40, num_attention_heads: int = 64, text_embed_dim: int = 1472, time_embed_dim: int = 512, condition_dim: int = 256, prior_vq_quantizer_codebook_size: int = 16384)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_glm_image.py#L503)

**参数：**

patch_size (`int`，默认为 `2`)：用于 patch 嵌入层的 patch 大小。

in_channels (`int`，默认为 `16`)：输入中的通道数。

num_layers (`int`，默认为 `30`)：要使用的 Transformer 块层数。

attention_head_dim (`int`，默认为 `40`)：每个头中的通道数。

num_attention_heads (`int`，默认为 `64`)：用于多头注意力的头数。

out_channels (`int`，默认为 `16`)：输出的通道数。

text_embed_dim (`int`，默认为 `1472`)：文本编码器输出的文本嵌入的输入维度。

time_embed_dim (`int`，默认为 `512`)：时间步嵌入的输出维度。

condition_dim (`int`，默认为 `256`) : 输入 SDXL 风格分辨率条件（original_size、target_size、crop_coords）的嵌入维度。

pos_embed_max_size (`int`，默认为 `128`)：位置嵌入的最大分辨率，将从中截取形状为 `H x W` 的切片并加到输入的 patch 化潜变量上，其中 `H` 和 `W` 分别为潜变量的高度和宽度。值为 128 表示图像生成支持的最大高度和宽度为 `128 * vae_scale_factor * patch_size => 128 * 8 * 2 => 2048`。

sample_size (`int`，默认为 `128`)：输入潜变量的基础分辨率。如果在生成过程中未提供高度/宽度，则使用该值来确定分辨率，即 `sample_size * vae_scale_factor => 128 * 8 => 1024`

#### forward[[diffusers.GlmImageTransformer2DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, prior_token_id: Tensor, prior_token_drop: Tensor, timestep: LongTensor, target_size: Tensor, crop_coords: Tensor, attention_kwargs: dict[str, typing.Any] | None = None, return_dict: bool = True, attention_mask: typing.Optional[torch.Tensor] = None, kv_caches: diffusers.models.transformers.transformer_glm_image.GlmImageKVCache | None = None, image_rotary_emb: tuple[torch.Tensor, torch.Tensor] | list[tuple[torch.Tensor, torch.Tensor]] | None = None)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_glm_image.py#L597)

**参数：**

hidden_states (`torch.Tensor`，形状为 `(batch_size, in_channels, height, width)`)：输入 `hidden_states`。

encoder_hidden_states (`torch.Tensor`，形状为 `(batch_size, sequence_len, embed_dims)`)：要使用的条件嵌入（从输入条件（例如提示词）计算得出的嵌入）。

prior_token_id (`torch.Tensor`) : 用于先前嵌入查找的 Token ID。

prior_token_drop (`torch.Tensor`) : 布尔掩码，指示应丢弃（置零）哪些先前嵌入。

timestep (`torch.LongTensor`)：用于指示去噪步骤。

target_size (`torch.Tensor`)：目标图像尺寸条件。

crop_coords (`torch.Tensor`)：裁剪坐标条件。

attention_kwargs (`dict`, *可选*) : 一个 kwargs 字典，如果指定，将作为参数传递给 [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) 中 `self.processor` 下定义的 `AttentionProcessor`。

return_dict (`bool`，*可选*，默认为 `True`)：是否返回 `~models.transformer_2d.Transformer2DModelOutput` 而不是普通元组。

attention_mask (`torch.Tensor`, *可选*) : 应用于注意力分数的掩码。

kv_caches (`GlmImageKVCache`, *可选*)：用于加速推理的预计算键/值缓存。

image_rotary_emb (`tuple` of `torch.Tensor`, *可选*) : 预计算的旋转位置嵌入。

**返回值：**

如果 `return_dict` 为 True，则返回 `~models.transformer_2d.Transformer2DModelOutput`，否则返回一个 `tuple`，其中第一个元素是样本张量。

[GlmImageTransformer2DModel](/docs/diffusers/v0.43.0/zh/api/models/glm_image_transformer2d#diffusers.GlmImageTransformer2DModel) 的前向方法。

