vector-quantize-pytorch 1.22.2__tar.gz → 1.22.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/PKG-INFO +2 -2
  2. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/README.md +1 -1
  3. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/pyproject.toml +1 -1
  4. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/residual_vq.py +2 -0
  5. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/vector_quantize_pytorch.py +22 -4
  6. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/.github/workflows/build.yml +0 -0
  7. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/.github/workflows/python-publish.yml +0 -0
  8. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/.github/workflows/test.yml +0 -0
  9. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/.gitignore +0 -0
  10. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/LICENSE +0 -0
  11. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/examples/autoencoder.py +0 -0
  12. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/examples/autoencoder_fsq.py +0 -0
  13. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/examples/autoencoder_lfq.py +0 -0
  14. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/examples/autoencoder_sim_vq.py +0 -0
  15. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/images/fsq.png +0 -0
  16. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/images/lfq.png +0 -0
  17. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/images/simvq.png +0 -0
  18. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/images/vq.png +0 -0
  19. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/ruff.toml +0 -0
  20. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/tests/test_latent_quantization.py +0 -0
  21. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/tests/test_lfq.py +0 -0
  22. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/tests/test_readme.py +0 -0
  23. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/__init__.py +0 -0
  24. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/finite_scalar_quantization.py +0 -0
  25. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/latent_quantization.py +0 -0
  26. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/lookup_free_quantization.py +0 -0
  27. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/random_projection_quantizer.py +0 -0
  28. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/residual_fsq.py +0 -0
  29. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/residual_lfq.py +0 -0
  30. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/residual_sim_vq.py +0 -0
  31. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/sim_vq.py +0 -0
  32. {vector_quantize_pytorch-1.22.2 → vector_quantize_pytorch-1.22.4}/vector_quantize_pytorch/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vector-quantize-pytorch
3
- Version: 1.22.2
3
+ Version: 1.22.4
4
4
  Summary: Vector Quantization - Pytorch
5
5
  Project-URL: Homepage, https://pypi.org/project/vector-quantize-pytorch/
6
6
  Project-URL: Repository, https://github.com/lucidrains/vector-quantizer-pytorch
@@ -324,7 +324,7 @@ This repository should also automatically synchronizing the codebooks in a multi
324
324
 
325
325
  <img src="./images/simvq.png" width="400px"></img>
326
326
 
327
- A <a href="https://arxiv.org/abs/2411.02038">new ICLR 2025 paper</a> proposes a scheme where the codebook is frozen, and the codes are implicitly generated through a linear projection. The authors claim this setup leads to less codebook collapse as well as easier convergence. I have found this to perform even better when paired with <a href="https://arxiv.org/abs/2410.06424">rotation trick</a> from Fifty et al., and expanding the linear projection to a small one layer MLP. You can experiment with it as so
327
+ A <a href="https://arxiv.org/abs/2411.02038">new paper</a> proposes a scheme where the codebook is frozen, and the codes are implicitly generated through a linear projection. The authors claim this setup leads to less codebook collapse as well as easier convergence. I have found this to perform even better when paired with <a href="https://arxiv.org/abs/2410.06424">rotation trick</a> from Fifty et al., and expanding the linear projection to a small one layer MLP. You can experiment with it as so
328
328
 
329
329
  Update: hearing mixed results
330
330
 
@@ -280,7 +280,7 @@ This repository should also automatically synchronizing the codebooks in a multi
280
280
 
281
281
  <img src="./images/simvq.png" width="400px"></img>
282
282
 
283
- A <a href="https://arxiv.org/abs/2411.02038">new ICLR 2025 paper</a> proposes a scheme where the codebook is frozen, and the codes are implicitly generated through a linear projection. The authors claim this setup leads to less codebook collapse as well as easier convergence. I have found this to perform even better when paired with <a href="https://arxiv.org/abs/2410.06424">rotation trick</a> from Fifty et al., and expanding the linear projection to a small one layer MLP. You can experiment with it as so
283
+ A <a href="https://arxiv.org/abs/2411.02038">new paper</a> proposes a scheme where the codebook is frozen, and the codes are implicitly generated through a linear projection. The authors claim this setup leads to less codebook collapse as well as easier convergence. I have found this to perform even better when paired with <a href="https://arxiv.org/abs/2410.06424">rotation trick</a> from Fifty et al., and expanding the linear projection to a small one layer MLP. You can experiment with it as so
284
284
 
285
285
  Update: hearing mixed results
286
286
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vector-quantize-pytorch"
3
- version = "1.22.2"
3
+ version = "1.22.4"
4
4
  description = "Vector Quantization - Pytorch"
5
5
  authors = [
6
6
  { name = "Phil Wang", email = "lucidrains@gmail.com" }
@@ -85,6 +85,8 @@ class MLP(Module):
85
85
  ):
86
86
  one_headed = codes.ndim == 2
87
87
 
88
+ condition, _ = pack([condition], 'b * d') # handle condition with ndim 2 - (batch, dim)
89
+
88
90
  if one_headed:
89
91
  codes = rearrange(codes, 'c d -> 1 c d')
90
92
 
@@ -559,9 +559,18 @@ class EuclideanCodebook(Module):
559
559
 
560
560
  else:
561
561
  if exists(codebook_transform_fn):
562
- quantize = einx.get_at('h b n [c] d, h b n -> h b n d', transformed_embed, embed_ind)
562
+ # quantize = einx.get_at('h b n [c] d, h b n -> h b n d', transformed_embed, embed_ind)
563
+
564
+ repeated_embed_ind = repeat(embed_ind, 'h b n -> h b n 1 d', d = transformed_embed.shape[-1])
565
+ quantize = transformed_embed.gather(-2, repeated_embed_ind)
566
+ quantize = rearrange(quantize, 'h b n 1 d -> h b n d')
567
+
563
568
  else:
564
- quantize = einx.get_at('h [c] d, h b n -> h b n d', embed, embed_ind)
569
+ # quantize = einx.get_at('h [c] d, h b n -> h b n d', embed, embed_ind)
570
+
571
+ repeated_embed = repeat(embed, 'h c d -> h b c d', b = embed_ind.shape[1])
572
+ repeated_embed_ind = repeat(embed_ind, 'h b n -> h b n d', d = embed.shape[-1])
573
+ quantize = repeated_embed.gather(-2, repeated_embed_ind)
565
574
 
566
575
  if self.training and self.ema_update and not freeze_codebook:
567
576
 
@@ -767,9 +776,18 @@ class CosineSimCodebook(Module):
767
776
 
768
777
  else:
769
778
  if exists(codebook_transform_fn):
770
- quantize = einx.get_at('h b n [c] d, h b n -> h b n d', transformed_embed, embed_ind)
779
+ # quantize = einx.get_at('h b n [c] d, h b n -> h b n d', transformed_embed, embed_ind)
780
+
781
+ repeated_embed_ind = repeat(embed_ind, 'h b n -> h b n 1 d', d = transformed_embed.shape[-1])
782
+ quantize = transformed_embed.gather(-2, repeated_embed_ind)
783
+ quantize = rearrange(quantize, 'h b n 1 d -> h b n d')
784
+
771
785
  else:
772
- quantize = einx.get_at('h [c] d, h b n -> h b n d', embed, embed_ind)
786
+ # quantize = einx.get_at('h [c] d, h b n -> h b n d', embed, embed_ind)
787
+
788
+ repeated_embed = repeat(embed, 'h c d -> h b c d', b = embed_ind.shape[1])
789
+ repeated_embed_ind = repeat(embed_ind, 'h b n -> h b n d', d = embed.shape[-1])
790
+ quantize = repeated_embed.gather(-2, repeated_embed_ind)
773
791
 
774
792
  if self.training and self.ema_update and not freeze_codebook:
775
793
  if exists(mask):