# CogView3PlusTransformer2DModel

Một mô hình Diffusion Transformer cho dữ liệu 2D từ [CogView3Plus](https://github.com/THUDM/CogView3) đã được giới thiệu trong [CogView3: Finer and Faster Text-to-Image Generation via Relay Diffusion](https://huggingface.co/papers/2403.05121) bởi Đại học Thanh Hoa & ZhipuAI.

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

```python
from diffusers import CogView3PlusTransformer2DModel

transformer = CogView3PlusTransformer2DModel.from_pretrained("THUDM/CogView3Plus-3b", subfolder="transformer", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"
```

## CogView3PlusTransformer2DModel[[diffusers.CogView3PlusTransformer2DModel]]

#### diffusers.CogView3PlusTransformer2DModel[[diffusers.CogView3PlusTransformer2DModel]]

```python
diffusers.CogView3PlusTransformer2DModel(patch_size: int = 2, in_channels: int = 16, num_layers: int = 30, attention_head_dim: int = 40, num_attention_heads: int = 64, out_channels: int = 16, text_embed_dim: int = 4096, time_embed_dim: int = 512, condition_dim: int = 256, pos_embed_max_size: int = 128, sample_size: int = 128)
```

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

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

Mô hình Transformer được giới thiệu trong [CogView3: Finer and Faster Text-to-Image Generation via Relay Diffusion](https://huggingface.co/papers/2403.05121).

#### forward[[diffusers.CogView3PlusTransformer2DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: LongTensor, original_size: Tensor, target_size: Tensor, crop_coords: Tensor, return_dict: bool = True)
```

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

**Tham số:**

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

encoder_hidden_states (`torch.Tensor`) : Các embedding điều kiện (các embedding được tính toán từ các điều kiện đầu vào như prompts) có hình dạng `(batch_size, sequence_len, text_embed_dim)`

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

original_size (`torch.Tensor`) : CogView3 sử dụng micro-conditioning kiểu SDXL cho kích thước ảnh gốc như đã mô tả trong mục 2.2 của [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

target_size (`torch.Tensor`) : CogView3 sử dụng micro-conditioning kiểu SDXL cho kích thước ảnh đích như đã mô tả trong mục 2.2 của [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

crop_coords (`torch.Tensor`) : CogView3 sử dụng micro-conditioning kiểu SDXL cho tọa độ crop như đã mô tả trong mục 2.2 của [https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952).

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.

**Trả về:** `torch.Tensor` hoặc `~models.transformer_2d.Transformer2DModelOutput`

Các latents đã khử nhiễu sử dụng các đầu vào được cung cấp làm điều kiện.

Phương thức forward của [CogView3PlusTransformer2DModel](/docs/diffusers/main/vi/api/models/cogview3plus_transformer2d#diffusers.CogView3PlusTransformer2DModel).

## 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).

