class_docstr: VQ-VAE Projector model
  
  This is intended to be used as a continuous-to-discrete mapping for
  adversarial optimization as described in the following paper:
  
  Improving Statistical Fidelity for Neural Image Compression with Implicit
  Local Likelihood Models
  MJ Muckley, A El-Nouby, K Ullrich, H Jégou, J Verbeek
  
  Args:
      vq_model: A VQ-VAE model with XCiT attention.
code: def __init__(self, vq_model: VqVaeXCiTAutoencoder):
      super().__init__()
  
      assert vq_model.bottleneck_op is not None
      self.encoder = vq_model.encoder
      self.bottleneck_op = vq_model.bottleneck_op
      self.eval()
  
      for param in self.parameters():
          param.requires_grad_(False)
  
file_path: NeuralCompression/neuralcompression/models/_vqvae_projector.py
imports: import torch.nn
  from torch import Tensor
  from neuralcompression import VqVaeAutoencoderOutput
  from ._vqvae_xcit_autoencoder import VqVaeXCiTAutoencoder
label_desc: Use image node_id 1 to create a new VqVaeProjector object from inherited base classes: nn with example: obj = VqVaeProjector(vq_model)