Diffusers documentation

Transformer2DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Transformer2DModel

Một mô hình Transformer cho dữ liệu dạng ảnh từ CompVis, dựa trên Vision Transformer do Dosovitskiy et al. giới thiệu. 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:

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 ảnh không nhiễu không chứa dự đoán cho pixel bị che vì ả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

lớp diffusers.Transformer2DModel

< >

( num_attention_heads: int = 16attention_head_dim: int = 88in_channels: int | None = Noneout_channels: int | None = Nonenum_layers: int = 1dropout: float = 0.0norm_num_groups: int = 32cross_attention_dim: int | None = Noneattention_bias: bool = Falsesample_size: int | None = Nonenum_vector_embeds: int | None = Nonepatch_size: int | None = Noneactivation_fn: str = 'geglu'num_embeds_ada_norm: int | None = Noneuse_linear_projection: bool = Falseonly_cross_attention: bool = Falsedouble_self_attention: bool = Falseupcast_attention: bool = Falsenorm_type: str = 'layer_norm'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05attention_type: str = 'default'caption_channels: int = Noneinterpolation_scale: float = Noneuse_additional_conditions: bool | None = None )

Tham số

  • num_attention_heads (int, tùy chọn, mặc định là 16) — Số lượng đầu (heads) được sử dụng cho cơ chế 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 head.
  • in_channels (int, tùy 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, tùy chọn, mặc định là 1) — Số lượng lớp khối Transformer cần sử dụng.
  • dropout (float, tùy chọn, mặc định là 0.0) — Xác suất dropout cần sử dụng.
  • cross_attention_dim (int, tùy chọn) — Số chiều của encoder_hidden_states được sử dụng.
  • sample_size (int, tùy chọn) — Độ rộng của các ảnh tiềm ẩn (cần chỉ định nếu đầu vào là discrete). 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, tùy 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 feed-forward.
  • num_embeds_ada_norm ( int, tuỳ chọn) — 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, sau đó đượ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 cho tối đa nhưng không quá num_embeds_ada_norm bước.

  • 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

< >

( hidden_states: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Nonetimestep: typing.Optional[torch.LongTensor] = Noneadded_cond_kwargs: dict = Noneclass_labels: typing.Optional[torch.LongTensor] = Nonecross_attention_kwargs: dict = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )

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) — Đầu vào hidden_states.
  • encoder_hidden_states ( torch.Tensor có hình dạng (batch size, sequence len, embed dims), tùy chọn) — 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), tùy chọn) — Dùng để chỉ định nhãn lớp điều kiện. Các nhãn lớp tùy 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.
  • 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 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 “bị loại bỏ”.
  • encoder_attention_mask ( torch.Tensor, tuỳ chọn) — Mặt nạ cross-attention được áp dụng cho encoder_hidden_states. Hỗ trợ hai định dạng:
    • Mask (batch, sequence_length) True = giữ lại, False = loại bỏ.
    • Bias (batch, 1, sequence_length) 0 = giữ, -10000 = loại bỏ.

    Nếu ndim == 2: sẽ được hiểu là một mask, sau đó được chuyển đổi thành một bias nhất quán với định dạng ở trên. Bias này sẽ được cộng vào các điểm cross-attention.

  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một UNet2DConditionOutput thay vì một tuple thông thường hay không.

Phương thức forward của Transformer2DModel.

Transformer2DModelOutput

lớp diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

Tham số

  • sample (torch.Tensor có hình dạng (batch_size, num_channels, height, width) hoặc (batch size, num_vector_embeds - 1, num_latent_pixels) nếu Transformer2DModel là rời rạc) — Trạng thái ẩn đầu ra được điều kiện bởi đầu vào encoder_hidden_states. Nếu là rời rạc, trả về các phân phối xác suất cho các pixel tiềm ẩn không nhiễu.

Đầu ra của Transformer2DModel.

Update on GitHub