Buckets:

hf-doc-build/doc / diffusers /main /vi /api /models /transformer2d.md
mishig's picture
|
download
raw
9.12 kB
# Transformer2DModel
Một mô hình Transformer cho dữ liệu dạng ảnh từ [CompVis](https://huggingface.co/CompVis), dựa trên [Vision Transformer](https://huggingface.co/papers/2010.11929) do Dosovitskiy et al. giới thiệu. [Transformer2DModel](/docs/diffusers/main/vi/api/models/transformer2d#diffusers.Transformer2DModel) chấp nhận đầu vào rời rạc (các lớp của vector nhúng) hoặc liên tục (các vector nhúng thực).
Khi đầu vào là **liên tục**:
1. Chiếu đầu vào và định dạng lại thành `(batch_size, sequence_length, feature_dimension)`.
2. Áp dụng các khối Transformer theo cách tiêu chuẩn.
3. Định dạng lại thành ảnh.
Khi đầu vào là **rời rạc**:
> [!TIP]
> Giả định rằng một trong các lớp đầu vào là pixel tiềm ẩn bị che. Các lớp dự đoán của hình ảnh không nhiễu không chứa dự đoán cho pixel bị che vì hình ảnh không nhiễu không thể bị che.
1. Chuyển đổi đầu vào (các lớp pixel tiềm ẩn) thành các embedding và áp dụng các embedding vị trí.
2. Áp dụng các khối Transformer theo cách tiêu chuẩn.
3. Dự đoán các lớp của ảnh không nhiễu.
## Transformer2DModel[[diffusers.Transformer2DModel]]
#### diffusers.Transformer2DModel[[diffusers.Transformer2DModel]]
```python
diffusers.Transformer2DModel(num_attention_heads: int = 16, attention_head_dim: int = 88, in_channels: int | None = None, out_channels: int | None = None, num_layers: int = 1, dropout: float = 0.0, norm_num_groups: int = 32, cross_attention_dim: int | None = None, attention_bias: bool = False, sample_size: int | None = None, num_vector_embeds: int | None = None, patch_size: int | None = None, activation_fn: str = 'geglu', num_embeds_ada_norm: int | None = None, use_linear_projection: bool = False, only_cross_attention: bool = False, double_self_attention: bool = False, upcast_attention: bool = False, norm_type: str = 'layer_norm', norm_elementwise_affine: bool = True, norm_eps: float = 1e-05, attention_type: str = 'default', caption_channels: int = None, interpolation_scale: float = None, use_additional_conditions: bool | None = None)
```
[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_2d.py#L39)
**Tham số:**
num_attention_heads (`int`, *tuỳ chọn*, mặc định là 16) : Số lượng đầu (heads) được sử dụng cho chú ý đa đầu (multi-head attention).
attention_head_dim (`int`, *tùy chọn*, mặc định là 88) : Số lượng kênh trong mỗi đầu.
in_channels (`int`, *tuỳ chọn*) : Số lượng kênh trong đầu vào và đầu ra (cần chỉ định nếu đầu vào là **liên tục**).
num_layers (`int`, *tuỳ chọn*, mặc định là 1) : Số lượng lớp khối Transformer cần sử dụng.
dropout (`float`, *tuỳ chọn*, mặc định là 0.0) : Xác suất dropout cần sử dụng.
cross_attention_dim (`int`, *optional*) : Số chiều của `encoder_hidden_states` cần sử dụng.
sample_size (`int`, *tuỳ chọn*) : Độ rộng của các ảnh tiềm ẩn (cần chỉ định nếu đầu vào là **rời rạc**). Giá trị này được cố định trong quá trình huấn luyện vì nó được dùng để học một số lượng embedding vị trí.
num_vector_embeds (`int`, *tuỳ chọn*) : Số lượng lớp của các vector nhúng của các pixel tiềm ẩn (cần chỉ định nếu đầu vào là **rời rạc**). Bao gồm cả lớp cho pixel tiềm ẩn bị che.
activation_fn (`str`, *tùy chọn*, mặc định là `"geglu"`) : Hàm kích hoạt được sử dụng trong mạng truyền thẳng.
num_embeds_ada_norm ( `int`, *optional*) : Số bước khuếch tán được sử dụng trong quá trình huấn luyện. Truyền tham số này nếu ít nhất một trong các norm_layers là `AdaLayerNorm`. Giá trị này được cố định trong quá trình huấn luyện vì nó được dùng để học một số lượng embedding nhất định, các embedding này sẽ được cộng vào các trạng thái ẩn. Trong quá trình suy luận, bạn có thể khử nhiễu với số bước không vượt quá `num_embeds_ada_norm`.
attention_bias (`bool`, *tùy chọn*) : Cấu hình xem chú ý của `TransformerBlocks` có nên chứa tham số bias hay không.
Mô hình Transformer 2D cho dữ liệu dạng ảnh.
#### forward[[diffusers.Transformer2DModel.forward]]
```python
forward(hidden_states: Tensor, encoder_hidden_states: typing.Optional[torch.Tensor] = None, timestep: typing.Optional[torch.LongTensor] = None, added_cond_kwargs: dict[str, torch.Tensor] = None, class_labels: typing.Optional[torch.LongTensor] = None, cross_attention_kwargs: dict[str, typing.Any] = None, attention_mask: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```
[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_2d.py#L324)
**Tham số:**
hidden_states (`torch.LongTensor` có hình dạng `(batch size, num latent pixels)` nếu rời rạc, `torch.Tensor` có hình dạng `(batch size, channel, height, width)` nếu liên tục) : `hidden_states` đầu vào.
encoder_hidden_states ( `torch.Tensor` có shape `(batch size, sequence len, embed dims)`, *optional*) : Các embedding điều kiện cho lớp cross attention. Nếu không được cung cấp, cross-attention sẽ mặc định là self-attention.
timestep ( `torch.LongTensor`, *tùy chọn*) : Dùng để chỉ bước khử nhiễu. Timestep tùy chọn được áp dụng dưới dạng embedding trong `AdaLayerNorm`.
class_labels ( `torch.LongTensor` có shape `(batch size, num classes)`, *tuỳ chọn*) : Dùng để chỉ định điều kiện nhãn lớp. Các nhãn lớp tuỳ chọn sẽ được áp dụng dưới dạng embedding trong `AdaLayerZeroNorm`.
cross_attention_kwargs ( `dict[str, Any]`, *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).
attention_mask ( `torch.Tensor`, *tùy chọn*) : Một attention mask có shape `(batch, key_tokens)` được áp dụng cho `encoder_hidden_states`. Nếu `1`, mask được giữ lại, ngược lại nếu `0`, nó sẽ bị loại bỏ. Mask sẽ được chuyển đổi thành một bias, thêm các giá trị âm lớn vào các điểm attention tương ứng với các token "loại bỏ".
encoder_attention_mask ( `torch.Tensor`, *tùy chọn*) : Mặt nạ chú ý chéo (cross-attention mask) được áp dụng cho `encoder_hidden_states`. Hỗ trợ hai định dạng: * Mặt nạ `(batch, sequence_length)` True = giữ lại, False = loại bỏ. * Thiên lệch (bias) `(batch, 1, sequence_length)` 0 = giữ lại, -10000 = loại bỏ. Nếu `ndim == 2`: sẽ được hiểu là một mặt nạ, sau đó được chuyển đổi thành một thiên lệch nhất quán với định dạng ở trên. Thiên lệch này sẽ được cộng vào các điểm chú ý chéo (cross-attention scores).
return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một [UNet2DConditionOutput](/docs/diffusers/main/vi/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.UNet2DConditionOutput) thay vì một tuple thông thường hay không.
**Trả về:**
Nếu `return_dict` là True, một `Transformer2DModelOutput` sẽ được trả về, ngược lại một `tuple` sẽ được trả về trong đó phần tử đầu tiên là tensor mẫu.
Phương thức forward của [Transformer2DModel](/docs/diffusers/main/vi/api/models/transformer2d#diffusers.Transformer2DModel).
## 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).

Xet Storage Details

Size:
9.12 kB
·
Xet hash:
e01b31f8f78a9095b90700645d5a8e936ff2330e0807577a72a6d14005bb8053

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.