# CogView4Transformer2DModel

Mô hình Diffusion Transformer cho dữ liệu 2D từ [CogView4]()

Mô hình có thể được tải bằng đoạn mã sau.

```python
from diffusers import CogView4Transformer2DModel

transformer = CogView4Transformer2DModel.from_pretrained("THUDM/CogView4-6B", subfolder="transformer", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"
```

## CogView4Transformer2DModel[[diffusers.CogView4Transformer2DModel]]

#### diffusers.CogView4Transformer2DModel[[diffusers.CogView4Transformer2DModel]]

```python
diffusers.CogView4Transformer2DModel(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 = 4096, time_embed_dim: int = 512, condition_dim: int = 256, pos_embed_max_size: int = 128, sample_size: int = 128, rope_axes_dim: tuple[int, int] = (256, 256))
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_cogview4.py#L617)

**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à `4096`) : 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.CogView4Transformer2DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: LongTensor, original_size: Tensor, 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, image_rotary_emb: tuple[torch.Tensor, torch.Tensor] | list[tuple[torch.Tensor, torch.Tensor]] | None = None)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_cogview4.py#L704)

**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.

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

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

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ú ý.

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 [CogView4Transformer2DModel](/docs/diffusers/main/vi/api/models/cogview4_transformer2d#diffusers.CogView4Transformer2DModel).

## Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

#### diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]

```python
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L21)

**Tham số:**

sample (`torch.Tensor` có shape `(batch_size, num_channels, height, width)` hoặc `(batch size, num_vector_embeds - 1, num_latent_pixels)` nếu [Transformer2DModel](/docs/diffusers/main/vi/api/models/transformer2d#diffusers.Transformer2DModel) là discrete) : Đầu ra của hidden states được điều kiện bởi đầu vào `encoder_hidden_states`. Nếu là discrete, trả về các phân phối xác suất cho các latent pixels chưa bị nhiễu.

Đầu ra của [Transformer2DModel](/docs/diffusers/main/vi/api/models/transformer2d#diffusers.Transformer2DModel).

