Diffusers documentation
Transformer2DModel
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:
- Chiếu đầu vào và định dạng lại thành
(batch_size, sequence_length, feature_dimension). - Áp dụng các khối Transformer theo cách tiêu chuẩn.
- Đị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.
- 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í.
- Áp dụng các khối Transformer theo cách tiêu chuẩn.
- Dự đoán các lớp của ảnh không nhiễu.
Transformer2DModel
lớp diffusers.Transformer2DModel
< source >( 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ủaencoder_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_normbước. - attention_bias (
bool, tùy chọn) — Cấu hình xem chú ý củaTransformerBlockscó nên chứa tham số bias hay không.
Mô hình Transformer 2D cho dữ liệu dạng ảnh.
forward
< source >( 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.LongTensorcó hình dạng(batch size, num latent pixels)nếu rời rạc,torch.Tensorcó hình dạng(batch size, channel, height, width)nếu liên tục) — Đầu vàohidden_states. - encoder_hidden_states (
torch.Tensorcó 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 trongAdaLayerNorm. - class_labels (
torch.LongTensorcó 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 trongAdaLayerZeroNorm. - 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 đếnAttentionProcessornhư đã định nghĩa dướiself.processortrong 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 choencoder_hidden_states. Nếu1, mask được giữ lại, ngược lại nếu0, 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 choencoder_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. - Mask
- 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
< source >( sample: torch.Tensor )
Tham số
- sample (
torch.Tensorcó 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àoencoder_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.