Diffusers documentation
Transformer2DModel
Transformer2DModel
Um modelo Transformer para dados semelhantes a imagens da CompVis que é baseado no Vision Transformer introduzido por Dosovitskiy et al. O Transformer2DModel aceita entradas discretas (classes de embeddings de vetores) ou contínuas (embeddings reais).
Quando a entrada é contínua:
- Projete a entrada e redimensione-a para
(batch_size, sequence_length, feature_dimension). - Aplique os blocos Transformer da maneira padrão.
- Redimensionar para imagem.
Quando a entrada é discreta:
Pressupõe-se que uma das classes de entrada seja o pixel latente mascarado. As classes previstas da imagem sem ruído não contêm uma previsão para o pixel mascarado, pois a imagem sem ruído não pode ser mascarada.
- Converte a entrada (classes de pixels latentes) em embeddings e aplica embeddings posicionais.
- Aplique os blocos Transformer da maneira padrão.
- Preveja as classes da imagem sem ruído.
Transformer2DModel
classe 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 )
Parâmetros
- num_attention_heads (
int, opcional, padrão 16) — O número de cabeças a serem usadas para a atenção multi-cabeça. - attention_head_dim (
int, opcional, padrão 88) — O número de canais em cada cabeça. - in_channels (
int, opcional) — O número de canais na entrada e na saída (especifique se a entrada é contínua). - num_layers (
int, opcional, padrão 1) — O número de camadas de blocos Transformer a serem usadas. - dropout (
float, opcional, padrão 0.0) — A probabilidade de dropout a ser utilizada. - cross_attention_dim (
int, opcional) — O número de dimensões deencoder_hidden_statesa serem usadas. - sample_size (
int, opcional) — A largura das imagens latentes (especifique se a entrada for discreta). Isso é fixo durante o treinamento, pois é usado para aprender um número de embeddings de posição. - num_vector_embeds (
int, opcional) — O número de classes dos embeddings vetoriais dos pixels latentes (especifique se a entrada é discreta). Inclui a classe para o pixel latente mascarado. - activation_fn (
str, opcional, padrão"geglu") — Função de ativação a ser usada no feed-forward. - num_embeds_ada_norm (
int, opcional) — O número de etapas de difusão usadas durante o treinamento. Passe se pelo menos um dos norm_layers forAdaLayerNorm. Isso é fixado durante o treinamento, pois é usado para aprender um número de embeddings que são adicionados aos estados ocultos.Durante a inferência, você pode desruidar por até, mas não mais do que,
num_embeds_ada_normetapas. - attention_bias (
bool, opcional) — Configura se a atenção dosTransformerBlocksdeve conter um parâmetro de viés.
Um modelo Transformer 2D para dados semelhantes a imagens.
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 )
Parâmetros
- hidden_states (
torch.LongTensorde forma(batch size, num latent pixels)se discreto,torch.Tensorde forma(batch size, channel, height, width)se contínuo) — Entradahidden_states. - encoder_hidden_states (
torch.Tensorde forma(batch size, sequence len, embed dims), opcional) — Incorporações condicionais para a camada de atenção cruzada. Se não fornecidas, a atenção cruzada usa por padrão a autoatenção. - timestep (
torch.LongTensor, opcional) — Usado para indicar o passo de desruido. Timestep opcional a ser aplicado como um embedding emAdaLayerNorm. - class_labels (
torch.LongTensorde forma(batch size, num classes), opcional) — Usado para indicar rótulos de classe de condicionamento. Rótulos de classe opcionais a serem aplicados como um embedding emAdaLayerZeroNorm. - cross_attention_kwargs (
dict[str, Any], opcional) — Um dicionário de kwargs que, se especificado, é passado para oAttentionProcessorconforme definido emself.processorem diffusers.models.attention_processor. - attention_mask (
torch.Tensor, opcional) — Uma máscara de atenção de forma(batch, key_tokens)é aplicada aencoder_hidden_states. Se1, a máscara é mantida; caso contrário, se0, ela é descartada. A máscara será convertida em um viés, que adiciona grandes valores negativos às pontuações de atenção correspondentes aos tokens “descartados”. - encoder_attention_mask (
torch.Tensor, opcional) — Máscara de atenção cruzada aplicada aencoder_hidden_states. Dois formatos suportados:- Máscara
(batch, sequence_length)True = manter, False = descartar. - Viés
(batch, 1, sequence_length)0 = manter, -10000 = descartar.
Se
ndim == 2: será interpretado como uma máscara e, em seguida, convertido em um viés consistente com o formato acima. Esse viés será adicionado às pontuações de atenção cruzada. - Máscara
- return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um UNet2DConditionOutput em vez de uma tupla simples.
O método forward do Transformer2DModel.
Transformer2DModelOutput
classe diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
Parâmetros
- sample (
torch.Tensorde forma(batch_size, num_channels, height, width)ou(batch size, num_vector_embeds - 1, num_latent_pixels)se Transformer2DModel for discreto) — A saída dos estados ocultos condicionada à entradaencoder_hidden_states. Se discreto, retorna distribuições de probabilidade para os pixels latentes sem ruído.
A saída de Transformer2DModel.