# GlmImageTransformer2DModel

Một mô hình Diffusion Transformer cho dữ liệu 2D từ [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)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_glm_image.py#L503)

**Tham số:**

patch_size (`int`, mặc định là `2`) : Kích thước của các patch được sử dụng trong lớp nhúng patch.

in_channels (`int`, mặc định là `16`) : Số lượng kênh trong đầu vào.

num_layers (`int`, mặc định là `30`) : Số lượng lớp khối Transformer cần sử dụng.

attention_head_dim (`int`, mặc định là `40`) : Số lượng kênh trong mỗi head.

num_attention_heads (`int`, mặc định là `64`) : Số lượng đầu (heads) được sử dụng cho cơ chế chú ý đa đầu (multi-head attention).

out_channels (`int`, mặc định là `16`) : Số lượng kênh trong đầu ra.

text_embed_dim (`int`, mặc định là `1472`) : Kích thước chiều đầu vào của các vector nhúng văn bản từ bộ mã hóa văn bản.

time_embed_dim (`int`, mặc định là `512`) : Kích thước chiều đầu ra của các embedding bước thời gian.

condition_dim (`int`, mặc định là `256`) : Kích thước embedding của các điều kiện độ phân giải phong cách SDXL đầu vào (original_size, target_size, crop_coords).

pos_embed_max_size (`int`, mặc định là `128`) : Độ phân giải tối đa của các nhúng vị trí, từ đó các lát cắt có hình dạng `H x W` được lấy và cộng vào các latent đã chia patch của đầu vào, trong đó `H` và `W` lần lượt là chiều cao và chiều rộng của latent. Giá trị 128 có nghĩa là chiều cao và chiều rộng tối đa được hỗ trợ cho việc tạo ảnh là `128 * vae_scale_factor * patch_size => 128 * 8 * 2 => 2048`.

sample_size (`int`, mặc định là `128`) : Độ phân giải cơ bản của latents đầu vào. Nếu chiều cao/chiều rộng không được cung cấp trong quá trình tạo, giá trị này được sử dụng để xác định độ phân giải theo `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)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/transformers/transformer_glm_image.py#L597)

**Tham số:**

hidden_states (`torch.Tensor` có hình dạng `(batch_size, in_channels, height, width)`) : `hidden_states` đầu vào.

encoder_hidden_states (`torch.Tensor` có shape `(batch_size, sequence_len, embed_dims)`) : Các embeddings điều kiện (embeddings được tính từ các điều kiện đầu vào như prompts) cần sử dụng.

prior_token_id (`torch.Tensor`) : Các id token cho việc tra cứu embedding trước đó.

prior_token_drop (`torch.Tensor`) : Mặt nạ Boolean chỉ ra các embedding trước đó cần bị loại bỏ (đặt về 0).

timestep (`torch.LongTensor`) : Dùng để chỉ bước khử nhiễu.

target_size (`torch.Tensor`) : Điều kiện kích thước ảnh đích.

crop_coords (`torch.Tensor`) : Điều kiện tọa độ cắt.

attention_kwargs (`dict`, *tùy chọn*) : Một từ điển kwargs mà nếu được chỉ định sẽ được truyền đến `AttentionProcessor` như đã định nghĩa dưới `self.processor` trong [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một `~models.transformer_2d.Transformer2DModelOutput` thay vì một tuple thông thường hay không.

attention_mask (`torch.Tensor`, *tùy chọn*) : Mặt nạ được áp dụng cho các điểm chú ý.

kv_caches (`GlmImageKVCache`, *tùy chọn*) : Bộ đệm key/value đã tính trước, được sử dụng để tăng tốc suy luận.

image_rotary_emb (`tuple` của `torch.Tensor`, *tuỳ chọn*) : Các nhúng vị trí quay đã tính trước.

**Trả về:**

Nếu `return_dict` là True, một `~models.transformer_2d.Transformer2DModelOutput` sẽ được trả về, ngược lại một `tuple` trong đó phần tử đầu tiên là tensor mẫu.

Phương thức forward của [GlmImageTransformer2DModel](/docs/diffusers/v0.43.0/vi/api/models/glm_image_transformer2d#diffusers.GlmImageTransformer2DModel).

