x-transformers 2.2.5__tar.gz → 2.2.7__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 (61) hide show
  1. {x_transformers-2.2.5 → x_transformers-2.2.7}/PKG-INFO +1 -1
  2. {x_transformers-2.2.5 → x_transformers-2.2.7}/pyproject.toml +1 -1
  3. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/entropy_based_tokenizer.py +11 -9
  4. {x_transformers-2.2.5 → x_transformers-2.2.7}/.github/FUNDING.yml +0 -0
  5. {x_transformers-2.2.5 → x_transformers-2.2.7}/.github/workflows/python-publish.yml +0 -0
  6. {x_transformers-2.2.5 → x_transformers-2.2.7}/.github/workflows/python-test.yaml +0 -0
  7. {x_transformers-2.2.5 → x_transformers-2.2.7}/.gitignore +0 -0
  8. {x_transformers-2.2.5 → x_transformers-2.2.7}/LICENSE +0 -0
  9. {x_transformers-2.2.5 → x_transformers-2.2.7}/README.md +0 -0
  10. {x_transformers-2.2.5 → x_transformers-2.2.7}/data/README.md +0 -0
  11. {x_transformers-2.2.5 → x_transformers-2.2.7}/data/enwik8.gz +0 -0
  12. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/all-attention.png +0 -0
  13. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/attention-on-attention.png +0 -0
  14. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/cosine-sim-attention.png +0 -0
  15. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/deepnorm.png +0 -0
  16. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/dynamic-pos-bias-linear.png +0 -0
  17. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/dynamic-pos-bias-log.png +0 -0
  18. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/dynamic-pos-bias-sinusoidal.png +0 -0
  19. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/dynamic-pos-bias.png +0 -0
  20. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/enhanced-recurrence.png +0 -0
  21. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/fcm.png +0 -0
  22. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/ffglu.png +0 -0
  23. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/flash-attention.png +0 -0
  24. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/gate_values.png +0 -0
  25. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/gating.png +0 -0
  26. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/length-extrapolation-scale.png +0 -0
  27. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/macaron-1.png +0 -0
  28. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/macaron-2.png +0 -0
  29. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/memory-transformer.png +0 -0
  30. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/normformer.png +0 -0
  31. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/pia.png +0 -0
  32. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/qknorm-analysis.png +0 -0
  33. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/resi_dual.png +0 -0
  34. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/residual_attn.png +0 -0
  35. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/rezero.png +0 -0
  36. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/rotary.png +0 -0
  37. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/sandwich-2.png +0 -0
  38. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/sandwich.png +0 -0
  39. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/sandwich_norm.png +0 -0
  40. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/scalenorm.png +0 -0
  41. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/talking-heads.png +0 -0
  42. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/topk-attention.png +0 -0
  43. {x_transformers-2.2.5 → x_transformers-2.2.7}/images/xval.png +0 -0
  44. {x_transformers-2.2.5 → x_transformers-2.2.7}/tests/test_x_transformers.py +0 -0
  45. {x_transformers-2.2.5 → x_transformers-2.2.7}/train_belief_state.py +0 -0
  46. {x_transformers-2.2.5 → x_transformers-2.2.7}/train_copy.py +0 -0
  47. {x_transformers-2.2.5 → x_transformers-2.2.7}/train_enwik8.py +0 -0
  48. {x_transformers-2.2.5 → x_transformers-2.2.7}/train_length_extrapolate.py +0 -0
  49. {x_transformers-2.2.5 → x_transformers-2.2.7}/train_parity.py +0 -0
  50. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/__init__.py +0 -0
  51. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/attend.py +0 -0
  52. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/autoregressive_wrapper.py +0 -0
  53. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/belief_state_wrapper.py +0 -0
  54. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/continuous.py +0 -0
  55. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/dpo.py +0 -0
  56. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/multi_input.py +0 -0
  57. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/neo_mlp.py +0 -0
  58. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/nonautoregressive_wrapper.py +0 -0
  59. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/x_transformers.py +0 -0
  60. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/xl_autoregressive_wrapper.py +0 -0
  61. {x_transformers-2.2.5 → x_transformers-2.2.7}/x_transformers/xval.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: x-transformers
3
- Version: 2.2.5
3
+ Version: 2.2.7
4
4
  Summary: X-Transformers
5
5
  Project-URL: Homepage, https://pypi.org/project/x-transformers/
6
6
  Project-URL: Repository, https://github.com/lucidrains/x-transformers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "x-transformers"
3
- version = "2.2.5"
3
+ version = "2.2.7"
4
4
  description = "X-Transformers"
5
5
  authors = [
6
6
  { name = "Phil Wang", email = "lucidrains@gmail.com" }
@@ -6,12 +6,6 @@ import torch.nn.functional as F
6
6
  from torch.nn import Module
7
7
  from torch.nn.utils.rnn import pad_sequence
8
8
 
9
- from x_transformers.x_transformers import (
10
- Decoder,
11
- TransformerWrapper,
12
- calc_entropy
13
- )
14
-
15
9
  import einx
16
10
  from einops import repeat, rearrange, pack, unpack
17
11
 
@@ -23,6 +17,13 @@ def exists(v):
23
17
  def default(v, d):
24
18
  return v if exists(v) else d
25
19
 
20
+ def log(t, eps = 1e-20):
21
+ return t.clamp(min = eps).log()
22
+
23
+ def calc_entropy_from_logits(logits):
24
+ prob = logits.softmax(dim = -1)
25
+ return -(prob * log(prob)).sum(dim = -1)
26
+
26
27
  # entropy based tokenizer applied in byte-latent transformer paper
27
28
  # they use a simple entropy threshold for segmenting a string into variable sized tokens
28
29
 
@@ -43,7 +44,8 @@ class EntropyBasedTokenizer(Module):
43
44
  self,
44
45
  seq, # Float['b n'] | Float['n']
45
46
  lens = None, # Int['b']
46
- return_segmented_seq = False
47
+ return_segmented_seq = False,
48
+ decoder_forward_kwargs: dict = dict()
47
49
  ):
48
50
  no_batch_dim = seq.ndim == 1
49
51
  seq, maybe_batch_ps = pack((seq,), '* n')
@@ -57,9 +59,9 @@ class EntropyBasedTokenizer(Module):
57
59
 
58
60
  # forward through a small trained decoder and get the entropies of the logits
59
61
 
60
- logits = self.decoder(seq)
62
+ logits = self.decoder(seq, **decoder_forward_kwargs)
61
63
 
62
- entropies = calc_entropy(logits)
64
+ entropies = calc_entropy_from_logits(logits)
63
65
 
64
66
  # get length mask for boundaries
65
67
 
File without changes
File without changes