Buckets:

hf-doc-build/doc / diffusers /main /pt /api /models /transformer2d.md
mishig's picture
|
download
raw
8.14 kB
# Transformer2DModel
Um modelo Transformer para dados semelhantes a imagens da [CompVis](https://huggingface.co/CompVis) que é baseado no [Vision Transformer](https://huggingface.co/papers/2010.11929) introduzido por Dosovitskiy et al. O [Transformer2DModel](/docs/diffusers/main/pt/api/models/transformer2d#diffusers.Transformer2DModel) aceita entradas discretas (classes de embeddings de vetores) ou contínuas (embeddings reais).
Quando a entrada é **contínua**:
1. Projete a entrada e redimensione-a para `(batch_size, sequence_length, feature_dimension)`.
2. Aplique os blocos Transformer da maneira padrão.
3. Redimensionar para imagem.
Quando a entrada é **discreta**:
> [!TIP]
> 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.
1. Converte a entrada (classes de pixels latentes) em embeddings e aplica embeddings posicionais.
2. Aplique os blocos Transformer da maneira padrão.
3. Preveja as classes da imagem sem ruído.
## 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)
```
[Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_2d.py#L39)
**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 head.
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 blocos de Transformer a serem usados.
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 de `encoder_hidden_states` a serem usadas.
sample_size (`int`, *opcional*) : A largura das imagens latentes (especifique se a entrada é **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 uma das norm_layers for `AdaLayerNorm`. Isso é fixo 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 para até, mas não mais etapas do que `num_embeds_ada_norm`.
attention_bias (`bool`, *opcional*) : Configura se a atenção dos `TransformerBlocks` deve conter um parâmetro de viés.
Um modelo Transformer 2D para dados semelhantes a imagens.
#### 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)
```
[Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_2d.py#L324)
**Parâmetros:**
hidden_states (`torch.LongTensor` de forma `(batch size, num latent pixels)` se discreto, `torch.Tensor` de forma `(batch size, channel, height, width)` se contínuo) : `hidden_states` de entrada.
encoder_hidden_states ( `torch.Tensor` de forma `(batch size, sequence len, embed dims)`, *opcional*) : Embebidings condicionais para a camada de atenção cruzada. Se não fornecidos, a atenção cruzada padrão é a autoatenção.
timestep ( `torch.LongTensor`, *opcional*) : Usado para indicar o passo de desruidamento. Timestep opcional a ser aplicado como um embedding em `AdaLayerNorm`.
class_labels ( `torch.LongTensor` de forma `(batch size, num classes)`, *opcional*) : Usado para indicar o condicionamento por rótulos de classe. Rótulos de classe opcionais a serem aplicados como um embedding em `AdaLayerZeroNorm`.
cross_attention_kwargs ( `dict[str, Any]`, *opcional*) : Um dicionário de kwargs que, se especificado, é passado para o `AttentionProcessor` conforme definido em `self.processor` em [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
attention_mask ( `torch.Tensor`, *opcional*) : Uma máscara de atenção com forma `(batch, key_tokens)` é aplicada a `encoder_hidden_states`. Se `1`, a máscara é mantida; caso contrário, se `0`, ela é descartada. A máscara será convertida em um viés, que adiciona valores negativos grandes às pontuações de atenção correspondentes aos tokens "descartados".
encoder_attention_mask ( `torch.Tensor`, *opcional*) : Máscara de atenção cruzada aplicada a `encoder_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á interpretada como uma máscara e, em seguida, convertida em um viés consistente com o formato acima. Esse viés será adicionado às pontuações de atenção cruzada.
return_dict (`bool`, *opcional*, padrão `True`) : Se deve ou não retornar um [UNet2DConditionOutput](/docs/diffusers/main/pt/api/models/unet2d-cond#diffusers.models.unets.unet_2d_condition.UNet2DConditionOutput) em vez de uma tupla simples.
**Retorna:**
Se `return_dict` for True, um `Transformer2DModelOutput` é retornado; caso contrário, uma `tuple` em que o primeiro elemento é o tensor da amostra.
O método forward do [Transformer2DModel](/docs/diffusers/main/pt/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)
```
[Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L21)
**Parâmetros:**
sample (`torch.Tensor` de forma `(batch_size, num_channels, height, width)` ou `(batch size, num_vector_embeds - 1, num_latent_pixels)` se [Transformer2DModel](/docs/diffusers/main/pt/api/models/transformer2d#diffusers.Transformer2DModel) for discreto) : A saída dos estados ocultos condicionada à entrada `encoder_hidden_states`. Se discreto, retorna distribuições de probabilidade para os pixels latentes sem ruído.
A saída de [Transformer2DModel](/docs/diffusers/main/pt/api/models/transformer2d#diffusers.Transformer2DModel).

Xet Storage Details

Size:
8.14 kB
·
Xet hash:
2ea6f66a393680711d5926bcf72f628a640db6b7945259578c23ca69a218c201

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