# VQModel

VQ-VAE modeli, Aaron van den Oord, Oriol Vinyals ve Koray Kavukcuoglu tarafından [Neural Discrete Representation Learning](https://huggingface.co/papers/1711.00937) makalesinde tanıtılmıştır. Model, 🤗 Diffusers içinde gizli temsillerin görüntülere dönüştürülmesi için kullanılır. [AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.AutoencoderKL)'den farklı olarak [VQModel](/docs/diffusers/main/tr/api/models/vq#diffusers.VQModel), kuantize edilmiş bir gizli uzayda çalışır.

Makalenin özeti şudur:

*Gözetimsiz olarak faydalı temsiller öğrenmek, makine öğrenmesinde hâlâ temel bir zorluktur. Bu makalede, bu tür ayrık temsilleri öğrenen basit ama güçlü bir üretken model öneriyoruz. Modelimiz olan Vektör Kuantize Edilmiş Varyasyonel Otoenkoder (VQ-VAE), VAE'lerden iki temel açıdan farklıdır: kodlayıcı ağ, sürekli kodlar yerine ayrık kodlar üretir; ve öncül dağılım statik değil, öğrenilir. Ayrık gizli bir temsil öğrenmek için vektör kuantizasyonundan (VQ) fikirler benimsiyoruz. VQ yönteminin kullanılması, güçlü bir otoregresif çözücüyle eşleştirildiğinde gizli değişkenlerin göz ardı edildiği "posterior çökmesi" sorunu gibi, VAE çerçevesinde tipik olarak gözlemlenen sorunların aşılmasını sağlar. Bu temsiller bir otoregresif öncül dağılımla eşleştirildiğinde, model yüksek kaliteli görüntüler, videolar ve konuşmalar üretebilir; ayrıca yüksek kaliteli konuşmacı dönüşümü ve fonemlerin gözetimsiz öğrenimini gerçekleştirebilir. Bu durum, öğrenilen temsillerin faydasına dair ek kanıtlar sunar.*

## VQModel[[diffusers.VQModel]]

#### diffusers.VQModel[[diffusers.VQModel]]

```python
diffusers.VQModel(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple = ('DownEncoderBlock2D',), up_block_types: tuple = ('UpDecoderBlock2D',), block_out_channels: tuple = (64,), layers_per_block: int = 1, act_fn: str = 'silu', latent_channels: int = 3, sample_size: int = 32, num_vq_embeddings: int = 256, norm_num_groups: int = 32, vq_embed_dim: int | None = None, scaling_factor: float = 0.18215, norm_type: str = 'group', mid_block_add_attention = True, lookup_from_codebook = False, force_upcast = False)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/vq_model.py#L40)

**Parametreler:**

in_channels (int, *isteğe bağlı*, varsayılan 3) : Girdi görüntüsündeki kanal sayısı.

out_channels (int, *isteğe bağlı*, varsayılan 3) : Çıktıdaki kanal sayısı.

down_block_types (`tuple[str]`, *isteğe bağlı*, varsayılan `("DownEncoderBlock2D",)`) : aşağı örneklem bloğu türlerinin tuple'ı.

up_block_types (`tuple[str]`, *isteğe bağlı*, varsayılan `("UpDecoderBlock2D",)`) : örnekleme bloğu türlerinin tuple'ı.

block_out_channels (`tuple[int]`, *isteğe bağlı*, varsayılan `(64,)`) : blok çıktı kanalları tuple'ı.

layers_per_block (`int`, *isteğe bağlı*, varsayılan `1`) : Blok başına katman sayısı.

act_fn (`str`, *isteğe bağlı*, varsayılan `"silu"`) : Kullanılacak aktivasyon fonksiyonu.

latent_channels (`int`, *isteğe bağlı*, varsayılan `3`) : Gizli uzaydaki kanal sayısı.

sample_size (`int`, *isteğe bağlı*, varsayılan `32`) : Örnek giriş boyutu.

num_vq_embeddings (`int`, *isteğe bağlı*, varsayılan `256`) : VQ-VAE'deki kod kitabı vektörlerinin sayısı.

norm_num_groups (`int`, *isteğe bağlı*, varsayılan `32`) : Normalizasyon katmanları için grup sayısı.

vq_embed_dim (`int`, *isteğe bağlı*) : VQ-VAE'de kod kitabı vektörlerinin gizli boyutu.

scaling_factor (`float`, *isteğe bağlı*, varsayılan `0.18215`) : Eğitim setinin ilk partisi kullanılarak hesaplanan, eğitilmiş gizli uzayın bileşen bazlı standart sapması. Bu değer, difüzyon modeli eğitilirken gizli uzayın birim varyansa ölçeklenmesi için kullanılır. Gizli değişkenler, difüzyon modeline aktarılmadan önce `z = z * scaling_factor` formülüyle ölçeklenir. Kod çözülürken, gizli değişkenler şu formülle orijinal ölçeğe geri döndürülür: `z = 1 / scaling_factor * z`. Daha fazla ayrıntı için [High-Resolution Image Synthesis with Latent Diffusion Models](https://huggingface.co/papers/2112.10752) makalesinin 4.3.2 ve D.1 bölümlerine bakın.

norm_type (`str`, *isteğe bağlı*, varsayılan `"group"`) : Kullanılacak normalizasyon katmanı türü. `"group"` veya `"spatial"` değerlerinden biri olabilir.

Gizil temsilleri çözmek için bir VQ-VAE modeli.

Bu model [ModelMixin](/docs/diffusers/main/tr/api/models/overview#diffusers.ModelMixin) sınıfından devralır. Tüm modeller için uygulanan genel yöntemlerini (indirme veya kaydetme gibi) görmek için üst sınıfın belgelendirmesine bakın.

#### forward[[diffusers.VQModel.forward]]

```python
forward(sample: Tensor, return_dict: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/vq_model.py#L163)

**Parametreler:**

sample (`torch.Tensor`) : Girdi örneği.

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

**Dönüş:** [VQEncoderOutput](/docs/diffusers/main/tr/api/models/vq#diffusers.models.autoencoders.vq_model.VQEncoderOutput) veya `tuple`

return_dict True ise [VQEncoderOutput](/docs/diffusers/main/tr/api/models/vq#diffusers.models.autoencoders.vq_model.VQEncoderOutput) döndürülür, aksi halde düz bir `tuple` döndürülür.

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

## VQEncoderOutput[[diffusers.models.autoencoders.vq_model.VQEncoderOutput]]

#### diffusers.models.autoencoders.vq_model.VQEncoderOutput[[diffusers.models.autoencoders.vq_model.VQEncoderOutput]]

```python
diffusers.models.autoencoders.vq_model.VQEncoderOutput(latents: Tensor)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/vq_model.py#L28)

**Parametreler:**

latents (`torch.Tensor`, şekli `(batch_size, num_channels, height, width)`) : Modelin son katmanından gelen kodlanmış çıktı örneği.

VQModel kodlama yönteminin çıktısı.

