# ChromaTransformer2DModel

Mô hình Transformer flux đã được chỉnh sửa từ [Chroma](https://huggingface.co/lodestones/Chroma1-HD)

## ChromaTransformer2DModel[[diffusers.ChromaTransformer2DModel]]

#### diffusers.ChromaTransformer2DModel[[diffusers.ChromaTransformer2DModel]]

```python
diffusers.ChromaTransformer2DModel(patch_size: int = 1, in_channels: int = 64, out_channels: int | None = None, num_layers: int = 19, num_single_layers: int = 38, attention_head_dim: int = 128, num_attention_heads: int = 24, joint_attention_dim: int = 4096, axes_dims_rope: tuple[int, ...] = (16, 56, 56), approximator_num_channels: int = 64, approximator_hidden_dim: int = 5120, approximator_layers: int = 5)
```

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

**Tham số:**

patch_size (`int`, mặc định là `1`) : Kích thước patch để chuyển dữ liệu đầu vào thành các patch nhỏ.

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

out_channels (`int`, *tuỳ chọn*, mặc định là `None`) : Số lượng kênh trong đầu ra. Nếu không được chỉ định, giá trị mặc định sẽ là `in_channels`.

num_layers (`int`, mặc định là `19`) : Số lượng lớp của các khối DiT dual stream cần sử dụng.

num_single_layers (`int`, mặc định là `38`) : Số lượng lớp của các khối DiT single stream cần sử dụng.

attention_head_dim (`int`, mặc định là `128`) : Số chiều được sử dụng cho mỗi đầu chú ý.

num_attention_heads (`int`, mặc định là `24`) : Số lượng đầu chú ý (attention heads) cần sử dụng.

joint_attention_dim (`int`, mặc định là `4096`) : Số chiều được sử dụng cho chú ý liên hợp (chiều nhúng/kênh của `encoder_hidden_states`).

axes_dims_rope (`tuple[int]`, mặc định là `(16, 56, 56)`) : Các kích thước cần sử dụng cho các nhúng vị trí quay (rotary positional embeddings).

Mô hình Transformer được giới thiệu trong Flux, đã được sửa đổi cho Chroma.

Tham khảo: https://huggingface.co/lodestones/Chroma1-HD

#### forward[[diffusers.ChromaTransformer2DModel.forward]]

```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor = None, timestep: LongTensor = None, img_ids: Tensor = None, txt_ids: Tensor = None, attention_mask: Tensor = None, joint_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_block_samples = None, controlnet_single_block_samples = None, return_dict: bool = True, controlnet_blocks_repeat: bool = False)
```

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

**Tham số:**

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

encoder_hidden_states (`torch.Tensor` có shape `(batch_size, text_sequence_length, joint_attention_dim)`) : Các embeddings điều kiện (các 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.

img_ids (`torch.Tensor`) : Các id vị trí ảnh được sử dụng để tính các nhúng vị trí quay (rotary positional embeddings).

txt_ids (`torch.Tensor`) : Các id vị trí văn bản được sử dụng để tính các nhúng vị trí quay (rotary positional embeddings).

attention_mask (`torch.Tensor`, *tùy chọn*) : Mặt nạ được áp dụng cho `encoder_hidden_states` trong quá trình chú ý.

controlnet_block_samples (`list` của `torch.Tensor`, *tùy chọn*) : Một danh sách các tensor mà nếu được chỉ định sẽ được cộng vào phần dư (residuals) của các khối transformer.

controlnet_single_block_samples (`list` của `torch.Tensor`, *tùy chọn*) : Một danh sách các tensor mà nếu được chỉ định sẽ được cộng vào phần dư (residuals) của các khối transformer đơn lẻ.

controlnet_blocks_repeat (`bool`, *tùy chọn*, mặc định là `False`) : Có lặp lại các mẫu khối controlnet trên tất cả các khối transformer hay không.

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

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

