# PriorTransformer

Prior Transformer, Ramesh ve ark. tarafından [Hierarchical Text-Conditional Image Generation with CLIP Latents](https://huggingface.co/papers/2204.06125) makalesinde ilk kez tanıtılmıştır. CLIP metin gömcelerinden CLIP görüntü gömcelerini tahmin etmek için kullanılır; görüntü gömceleri, gürültü azaltma difüzyon süreci aracılığıyla tahmin edilir.

Makalenin özeti şudur:

*CLIP gibi kontrastif modellerin, hem semantiği hem de stili yakalayan, görüntülerin sağlam temsillerini öğrendiği gösterilmiştir. Bu temsilleri görüntü üretimi için kullanmak amacıyla iki aşamalı bir model öneriyoruz: bir metin açıklaması verildiğinde bir CLIP görüntü gömümünü üreten bir öncül (prior) ve görüntü gömümüne koşullu olarak bir görüntü üreten bir çözücü (decoder). Görüntü temsillerinin açıkça üretilmesinin, fotogerçekçilikte ve açıklama benzerliğinde minimal kayıpla görüntü çeşitliliğini artırdığını gösteriyoruz. Görüntü temsillerine koşullu çözücülerimiz, görüntü temsilinde bulunmayan, önemsiz detayları değiştirirken hem semantiği hem de stili koruyan bir görüntünün varyasyonlarını da üretebilir. Ayrıca, CLIP'in ortak gömüm uzayı, sıfır atış (zero-shot) bir şekilde dil yönlendirmeli görüntü manipülasyonlarını mümkün kılar. Çözücü için difüzyon modelleri kullanıyor ve öncül için hem otoregresif hem de difüzyon modelleriyle deney yapıyoruz; sonuncuların hesaplama açısından daha verimli olduğunu ve daha yüksek kaliteli örnekler ürettiğini buluyoruz.*

## PriorTransformer[[diffusers.PriorTransformer]]

#### diffusers.PriorTransformer[[diffusers.PriorTransformer]]

```python
diffusers.PriorTransformer(num_attention_heads: int = 32, attention_head_dim: int = 64, num_layers: int = 20, embedding_dim: int = 768, num_embeddings = 77, additional_embeddings = 4, dropout: float = 0.0, time_embed_act_fn: str = 'silu', norm_in_type: str | None = None, embedding_proj_norm_type: str | None = None, encoder_hid_proj_type: str | None = 'linear', added_emb_type: str | None = 'prd', time_embed_dim: int | None = None, embedding_proj_dim: int | None = None, clip_embed_dim: int | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/prior_transformer.py#L34)

**Parametreler:**

num_attention_heads (`int`, *isteğe bağlı*, varsayılan 32) : Çok başlı dikkat için kullanılacak baş sayısı.

attention_head_dim (`int`, *isteğe bağlı*, varsayılan 64) : Her baştaki kanal sayısı.

num_layers (`int`, *isteğe bağlı*, varsayılan 20) : Kullanılacak Transformer bloğu katman sayısı.

embedding_dim (`int`, *isteğe bağlı*, varsayılan 768) : Model girdisi `hidden_states` boyutu

num_embeddings (`int`, *isteğe bağlı*, varsayılan 77) : Model girdisi `hidden_states`'nin gömme sayısı

additional_embeddings (`int`, *opsiyonel*, varsayılan 4) : Projeksiyonlanmış `hidden_states`'e eklenen ek token sayısı. Kullanılan `hidden_states`'in gerçek uzunluğu `num_embeddings + additional_embeddings`'tür.

dropout (`float`, *opsiyonel*, varsayılan 0.0) : Kullanılacak dropout olasılığı.

time_embed_act_fn (`str`, *isteğe bağlı*, varsayılan 'silu') : Zaman adımları gömmelemelerini oluşturmak için kullanılacak aktivasyon fonksiyonu.

norm_in_type (`str`, *isteğe bağlı*, varsayılan olarak None) : Transformer bloklarına aktarılmasından önce gizli durumlara uygulanacak normalizasyon katmanı. Normalizasyona gerek yoksa `None` olarak ayarlayın.

embedding_proj_norm_type (`str`, *isteğe bağlı*, varsayılanı None) : Girdi `proj_embedding` üzerinde uygulanacak normalizasyon katmanı. Normalizasyona gerek yoksa `None` olarak ayarlayın.

encoder_hid_proj_type (`str`, *isteğe bağlı*, varsayılan `linear`) : Girdi `encoder_hidden_states` üzerine uygulanacak projeksiyon katmanı. `encoder_hidden_states` `None` ise bunu `None` olarak ayarlayın.

added_emb_type (`str`, *isteğe bağlı*, varsayılan `prd`) : Modeli koşullandırmak için ek gömlemeler. `prd` veya `None` arasından seçim yapın. `prd` seçilirse, unclip makalesinde https://huggingface.co/papers/2204.06125 önerildiği gibi, metin gömlemesi ile görüntü gömlemesi arasındaki (kuantize) nokta çarpımını gösteren bir jeton başa eklenir. `None` ise, ek gömlemeler başa eklenmez.

time_embed_dim (`int, *optional*, defaults to None) : The dimension of timestep embeddings. If None, will be set to `num_attention_heads * attention_head_dim`

embedding_proj_dim (`int`, *isteğe bağlı*, varsayılan olarak None) : `proj_embedding` boyutu. None ise, `embedding_dim` olarak ayarlanır.

clip_embed_dim (`int`, *isteğe bağlı*, varsayılan olarak None) : Çıktının boyutu. None ise `embedding_dim` olarak ayarlanır.

A Prior Transformer modeli.

#### forward[[diffusers.PriorTransformer.forward]]

```python
forward(hidden_states, timestep: typing.Union[torch.Tensor, float, int], proj_embedding: Tensor, encoder_hidden_states: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.BoolTensor] = None, return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/prior_transformer.py#L183)

**Parametreler:**

hidden_states (`torch.Tensor`, şekli `(batch_size, embedding_dim)`) : Şu anda tahmin edilen gömme vektörleri.

timestep (`torch.LongTensor`) : Güncel gürültü azaltma adımı.

proj_embedding (`torch.Tensor`, şekli `(batch_size, embedding_dim)`) : Gürültü azaltma sürecinin koşullandığı projeksiyon gömme vektörü.

encoder_hidden_states (`torch.Tensor`, şekli `(batch_size, num_embeddings, embedding_dim)`) : Gürültü azaltma sürecinin koşullandığı metin gömme gizli durumları.

attention_mask (`torch.BoolTensor`, şekli `(batch_size, num_embeddings)`) : Metin gömme vektörleri için metin maskesi.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine [PriorTransformerOutput](/docs/diffusers/main/tr/api/models/prior_transformer#diffusers.models.transformers.prior_transformer.PriorTransformerOutput) döndürülüp döndürülmemesi.

**Dönüş:** [PriorTransformerOutput](/docs/diffusers/main/tr/api/models/prior_transformer#diffusers.models.transformers.prior_transformer.PriorTransformerOutput) veya `tuple`

return_dict True ise, [PriorTransformerOutput](/docs/diffusers/main/tr/api/models/prior_transformer#diffusers.models.transformers.prior_transformer.PriorTransformerOutput) döndürülür, aksi takdirde ilk öğesi örnek tensörü olan bir tuple döndürülür.

[PriorTransformer](/docs/diffusers/main/tr/api/models/prior_transformer#diffusers.PriorTransformer) ileri yöntemi.

#### set_default_attn_processor[[diffusers.PriorTransformer.set_default_attn_processor]]

```python
set_default_attn_processor()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/prior_transformer.py#L168)

Özel dikkat işleyicilerini devre dışı bırakır ve varsayılan dikkat uygulamasını ayarlar.

## PriorTransformerOutput[[diffusers.models.transformers.prior_transformer.PriorTransformerOutput]]

#### diffusers.models.transformers.prior_transformer.PriorTransformerOutput[[diffusers.models.transformers.prior_transformer.PriorTransformerOutput]]

```python
diffusers.models.transformers.prior_transformer.PriorTransformerOutput(predicted_image_embedding: Tensor)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/prior_transformer.py#L22)

**Parametreler:**

predicted_image_embedding (`torch.Tensor`, şekli `(batch_size, embedding_dim)`) : CLIP metin gömme girdisine koşullu olarak tahmin edilen CLIP görüntü gömme.

[PriorTransformer](/docs/diffusers/main/tr/api/models/prior_transformer#diffusers.PriorTransformer)'ın çıktısı.

