torchzero 0.3.9__py3-none-any.whl → 0.3.11__py3-none-any.whl

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 (153) hide show
  1. docs/source/conf.py +6 -4
  2. docs/source/docstring template.py +46 -0
  3. tests/test_identical.py +2 -3
  4. tests/test_opts.py +115 -68
  5. tests/test_tensorlist.py +2 -2
  6. tests/test_vars.py +62 -61
  7. torchzero/core/__init__.py +2 -3
  8. torchzero/core/module.py +185 -53
  9. torchzero/core/transform.py +327 -159
  10. torchzero/modules/__init__.py +3 -1
  11. torchzero/modules/clipping/clipping.py +120 -23
  12. torchzero/modules/clipping/ema_clipping.py +37 -22
  13. torchzero/modules/clipping/growth_clipping.py +20 -21
  14. torchzero/modules/experimental/__init__.py +30 -4
  15. torchzero/modules/experimental/absoap.py +53 -156
  16. torchzero/modules/experimental/adadam.py +22 -15
  17. torchzero/modules/experimental/adamY.py +21 -25
  18. torchzero/modules/experimental/adam_lambertw.py +149 -0
  19. torchzero/modules/{line_search/trust_region.py → experimental/adaptive_step_size.py} +37 -8
  20. torchzero/modules/experimental/adasoap.py +24 -129
  21. torchzero/modules/experimental/cosine.py +214 -0
  22. torchzero/modules/experimental/cubic_adam.py +97 -0
  23. torchzero/modules/experimental/curveball.py +12 -12
  24. torchzero/modules/{projections → experimental}/dct.py +11 -11
  25. torchzero/modules/experimental/eigendescent.py +120 -0
  26. torchzero/modules/experimental/etf.py +195 -0
  27. torchzero/modules/experimental/exp_adam.py +113 -0
  28. torchzero/modules/experimental/expanded_lbfgs.py +141 -0
  29. torchzero/modules/{projections → experimental}/fft.py +10 -10
  30. torchzero/modules/experimental/gradmin.py +2 -2
  31. torchzero/modules/experimental/hnewton.py +85 -0
  32. torchzero/modules/{quasi_newton/experimental → experimental}/modular_lbfgs.py +49 -50
  33. torchzero/modules/experimental/newton_solver.py +11 -11
  34. torchzero/modules/experimental/newtonnewton.py +92 -0
  35. torchzero/modules/experimental/parabolic_search.py +220 -0
  36. torchzero/modules/experimental/reduce_outward_lr.py +10 -7
  37. torchzero/modules/{projections/structural.py → experimental/structural_projections.py} +12 -54
  38. torchzero/modules/experimental/subspace_preconditioners.py +20 -10
  39. torchzero/modules/experimental/tensor_adagrad.py +42 -0
  40. torchzero/modules/functional.py +12 -2
  41. torchzero/modules/grad_approximation/fdm.py +31 -4
  42. torchzero/modules/grad_approximation/forward_gradient.py +17 -7
  43. torchzero/modules/grad_approximation/grad_approximator.py +69 -24
  44. torchzero/modules/grad_approximation/rfdm.py +310 -50
  45. torchzero/modules/higher_order/__init__.py +1 -0
  46. torchzero/modules/higher_order/higher_order_newton.py +319 -0
  47. torchzero/modules/line_search/__init__.py +4 -4
  48. torchzero/modules/line_search/adaptive.py +99 -0
  49. torchzero/modules/line_search/backtracking.py +75 -31
  50. torchzero/modules/line_search/line_search.py +107 -49
  51. torchzero/modules/line_search/polynomial.py +233 -0
  52. torchzero/modules/line_search/scipy.py +20 -5
  53. torchzero/modules/line_search/strong_wolfe.py +52 -36
  54. torchzero/modules/misc/__init__.py +27 -0
  55. torchzero/modules/misc/debug.py +48 -0
  56. torchzero/modules/misc/escape.py +60 -0
  57. torchzero/modules/misc/gradient_accumulation.py +70 -0
  58. torchzero/modules/misc/misc.py +316 -0
  59. torchzero/modules/misc/multistep.py +158 -0
  60. torchzero/modules/misc/regularization.py +171 -0
  61. torchzero/modules/misc/split.py +103 -0
  62. torchzero/modules/{ops → misc}/switch.py +48 -7
  63. torchzero/modules/momentum/__init__.py +1 -1
  64. torchzero/modules/momentum/averaging.py +25 -10
  65. torchzero/modules/momentum/cautious.py +115 -40
  66. torchzero/modules/momentum/ema.py +92 -41
  67. torchzero/modules/momentum/experimental.py +21 -13
  68. torchzero/modules/momentum/matrix_momentum.py +145 -76
  69. torchzero/modules/momentum/momentum.py +25 -4
  70. torchzero/modules/ops/__init__.py +3 -31
  71. torchzero/modules/ops/accumulate.py +51 -25
  72. torchzero/modules/ops/binary.py +108 -62
  73. torchzero/modules/ops/multi.py +95 -34
  74. torchzero/modules/ops/reduce.py +31 -23
  75. torchzero/modules/ops/unary.py +37 -21
  76. torchzero/modules/ops/utility.py +53 -45
  77. torchzero/modules/optimizers/__init__.py +12 -3
  78. torchzero/modules/optimizers/adagrad.py +48 -29
  79. torchzero/modules/optimizers/adahessian.py +223 -0
  80. torchzero/modules/optimizers/adam.py +35 -37
  81. torchzero/modules/optimizers/adan.py +110 -0
  82. torchzero/modules/optimizers/adaptive_heavyball.py +57 -0
  83. torchzero/modules/optimizers/esgd.py +171 -0
  84. torchzero/modules/optimizers/ladagrad.py +183 -0
  85. torchzero/modules/optimizers/lion.py +4 -4
  86. torchzero/modules/optimizers/mars.py +91 -0
  87. torchzero/modules/optimizers/msam.py +186 -0
  88. torchzero/modules/optimizers/muon.py +32 -7
  89. torchzero/modules/optimizers/orthograd.py +4 -5
  90. torchzero/modules/optimizers/rmsprop.py +19 -19
  91. torchzero/modules/optimizers/rprop.py +89 -52
  92. torchzero/modules/optimizers/sam.py +163 -0
  93. torchzero/modules/optimizers/shampoo.py +55 -27
  94. torchzero/modules/optimizers/soap.py +40 -37
  95. torchzero/modules/optimizers/sophia_h.py +82 -25
  96. torchzero/modules/projections/__init__.py +2 -4
  97. torchzero/modules/projections/cast.py +51 -0
  98. torchzero/modules/projections/galore.py +4 -2
  99. torchzero/modules/projections/projection.py +212 -118
  100. torchzero/modules/quasi_newton/__init__.py +44 -5
  101. torchzero/modules/quasi_newton/cg.py +190 -39
  102. torchzero/modules/quasi_newton/diagonal_quasi_newton.py +163 -0
  103. torchzero/modules/quasi_newton/lbfgs.py +154 -97
  104. torchzero/modules/quasi_newton/lsr1.py +102 -58
  105. torchzero/modules/quasi_newton/quasi_newton.py +1032 -177
  106. torchzero/modules/quasi_newton/trust_region.py +397 -0
  107. torchzero/modules/second_order/__init__.py +2 -2
  108. torchzero/modules/second_order/newton.py +245 -54
  109. torchzero/modules/second_order/newton_cg.py +311 -21
  110. torchzero/modules/second_order/nystrom.py +124 -21
  111. torchzero/modules/smoothing/gaussian.py +55 -21
  112. torchzero/modules/smoothing/laplacian.py +20 -12
  113. torchzero/modules/step_size/__init__.py +2 -0
  114. torchzero/modules/step_size/adaptive.py +122 -0
  115. torchzero/modules/step_size/lr.py +154 -0
  116. torchzero/modules/weight_decay/__init__.py +1 -1
  117. torchzero/modules/weight_decay/weight_decay.py +126 -10
  118. torchzero/modules/wrappers/optim_wrapper.py +40 -12
  119. torchzero/optim/wrappers/directsearch.py +281 -0
  120. torchzero/optim/wrappers/fcmaes.py +105 -0
  121. torchzero/optim/wrappers/mads.py +89 -0
  122. torchzero/optim/wrappers/nevergrad.py +20 -5
  123. torchzero/optim/wrappers/nlopt.py +28 -14
  124. torchzero/optim/wrappers/optuna.py +70 -0
  125. torchzero/optim/wrappers/scipy.py +167 -16
  126. torchzero/utils/__init__.py +3 -7
  127. torchzero/utils/derivatives.py +5 -4
  128. torchzero/utils/linalg/__init__.py +1 -1
  129. torchzero/utils/linalg/solve.py +251 -12
  130. torchzero/utils/numberlist.py +2 -0
  131. torchzero/utils/optimizer.py +55 -74
  132. torchzero/utils/python_tools.py +27 -4
  133. torchzero/utils/tensorlist.py +40 -28
  134. {torchzero-0.3.9.dist-info → torchzero-0.3.11.dist-info}/METADATA +76 -51
  135. torchzero-0.3.11.dist-info/RECORD +159 -0
  136. {torchzero-0.3.9.dist-info → torchzero-0.3.11.dist-info}/WHEEL +1 -1
  137. torchzero/core/preconditioner.py +0 -138
  138. torchzero/modules/experimental/algebraic_newton.py +0 -145
  139. torchzero/modules/experimental/soapy.py +0 -290
  140. torchzero/modules/experimental/spectral.py +0 -288
  141. torchzero/modules/experimental/structured_newton.py +0 -111
  142. torchzero/modules/experimental/tropical_newton.py +0 -136
  143. torchzero/modules/lr/__init__.py +0 -2
  144. torchzero/modules/lr/lr.py +0 -59
  145. torchzero/modules/lr/step_size.py +0 -97
  146. torchzero/modules/ops/debug.py +0 -25
  147. torchzero/modules/ops/misc.py +0 -419
  148. torchzero/modules/ops/split.py +0 -75
  149. torchzero/modules/quasi_newton/experimental/__init__.py +0 -1
  150. torchzero/modules/quasi_newton/olbfgs.py +0 -196
  151. torchzero-0.3.9.dist-info/RECORD +0 -131
  152. {torchzero-0.3.9.dist-info → torchzero-0.3.11.dist-info}/licenses/LICENSE +0 -0
  153. {torchzero-0.3.9.dist-info → torchzero-0.3.11.dist-info}/top_level.txt +0 -0
@@ -1,196 +0,0 @@
1
- from collections import deque
2
- from functools import partial
3
- from operator import itemgetter
4
- from typing import Literal
5
-
6
- import torch
7
-
8
- from ...core import Chainable, Module, Transform, Vars, apply
9
- from ...utils import NumberList, TensorList, as_tensorlist
10
- from .lbfgs import _adaptive_damping, lbfgs
11
-
12
-
13
- @torch.no_grad
14
- def _store_sk_yk_after_step_hook(optimizer, vars: Vars, prev_params: TensorList, prev_grad: TensorList, damping, init_damping, eigval_bounds, s_history: deque[TensorList], y_history: deque[TensorList], sy_history: deque[torch.Tensor]):
15
- assert vars.closure is not None
16
- with torch.enable_grad(): vars.closure()
17
- grad = [p.grad if p.grad is not None else torch.zeros_like(p) for p in vars.params]
18
- s_k = vars.params - prev_params
19
- y_k = grad - prev_grad
20
- ys_k = s_k.dot(y_k)
21
-
22
- if damping:
23
- s_k, y_k, ys_k = _adaptive_damping(s_k, y_k, ys_k, init_damping=init_damping, eigval_bounds=eigval_bounds)
24
-
25
- if ys_k > 1e-10:
26
- s_history.append(s_k)
27
- y_history.append(y_k)
28
- sy_history.append(ys_k)
29
-
30
-
31
-
32
- class OnlineLBFGS(Module):
33
- """Online L-BFGS.
34
- Parameter and gradient differences are sampled from the same mini-batch by performing an extra forward and backward pass.
35
- However I did a bunch of experiments and the online part doesn't seem to help. Normal L-BFGS is usually still
36
- better because it performs twice as many steps, and it is reasonably stable with normalization or grafting.
37
-
38
- Args:
39
- history_size (int, optional): number of past parameter differences and gradient differences to store. Defaults to 10.
40
- sample_grads (str, optional):
41
- - "before" - samples current mini-batch gradient at previous and current parameters, calculates y_k
42
- and adds it to history before stepping.
43
- - "after" - samples current mini-batch gradient at parameters before stepping and after updating parameters.
44
- s_k and y_k are added after parameter update, therefore they are delayed by 1 step.
45
-
46
- In practice both modes behave very similarly. Defaults to 'before'.
47
- tol (float | None, optional):
48
- tolerance for minimal gradient difference to avoid instability after converging to minima. Defaults to 1e-10.
49
- damping (bool, optional):
50
- whether to use adaptive damping. Learning rate might need to be lowered with this enabled. Defaults to False.
51
- init_damping (float, optional):
52
- initial damping for adaptive dampening. Defaults to 0.9.
53
- eigval_bounds (tuple, optional):
54
- eigenvalue bounds for adaptive dampening. Defaults to (0.5, 50).
55
- params_beta (float | None, optional):
56
- if not None, EMA of parameters is used for preconditioner update. Defaults to None.
57
- grads_beta (float | None, optional):
58
- if not None, EMA of gradients is used for preconditioner update. Defaults to None.
59
- update_freq (int, optional):
60
- how often to update L-BFGS history. Defaults to 1.
61
- z_beta (float | None, optional):
62
- optional EMA for initial H^-1 @ q. Acts as a kind of momentum but is prone to get stuck. Defaults to None.
63
- inner (Chainable | None, optional):
64
- optional inner modules applied after updating L-BFGS history and before preconditioning. Defaults to None.
65
- """
66
- def __init__(
67
- self,
68
- history_size=10,
69
- sample_grads: Literal['before', 'after'] = 'before',
70
- tol: float | None = 1e-10,
71
- damping: bool = False,
72
- init_damping=0.9,
73
- eigval_bounds=(0.5, 50),
74
- z_beta: float | None = None,
75
- inner: Chainable | None = None,
76
- ):
77
- defaults = dict(history_size=history_size, tol=tol, damping=damping, init_damping=init_damping, eigval_bounds=eigval_bounds, sample_grads=sample_grads, z_beta=z_beta)
78
- super().__init__(defaults)
79
-
80
- self.global_state['s_history'] = deque(maxlen=history_size)
81
- self.global_state['y_history'] = deque(maxlen=history_size)
82
- self.global_state['sy_history'] = deque(maxlen=history_size)
83
-
84
- if inner is not None:
85
- self.set_child('inner', inner)
86
-
87
- def reset(self):
88
- """Resets the internal state of the L-SR1 module."""
89
- # super().reset() # Clears self.state (per-parameter) if any, and "step"
90
- # Re-initialize L-SR1 specific global state
91
- self.state.clear()
92
- self.global_state['step'] = 0
93
- self.global_state['s_history'].clear()
94
- self.global_state['y_history'].clear()
95
- self.global_state['sy_history'].clear()
96
-
97
- @torch.no_grad
98
- def step(self, vars):
99
- assert vars.closure is not None
100
-
101
- params = as_tensorlist(vars.params)
102
- update = as_tensorlist(vars.get_update())
103
- step = self.global_state.get('step', 0)
104
- self.global_state['step'] = step + 1
105
-
106
- # history of s and k
107
- s_history: deque[TensorList] = self.global_state['s_history']
108
- y_history: deque[TensorList] = self.global_state['y_history']
109
- sy_history: deque[torch.Tensor] = self.global_state['sy_history']
110
-
111
- tol, damping, init_damping, eigval_bounds, sample_grads, z_beta = itemgetter(
112
- 'tol', 'damping', 'init_damping', 'eigval_bounds', 'sample_grads', 'z_beta')(self.settings[params[0]])
113
-
114
- # sample gradient at previous params with current mini-batch
115
- if sample_grads == 'before':
116
- prev_params = self.get_state('prev_params', params=params, cls=TensorList)
117
- if step == 0:
118
- s_k = None; y_k = None; ys_k = None
119
- else:
120
- s_k = params - prev_params
121
-
122
- current_params = params.clone()
123
- params.set_(prev_params)
124
- with torch.enable_grad(): vars.closure()
125
- y_k = update - params.grad
126
- ys_k = s_k.dot(y_k)
127
- params.set_(current_params)
128
-
129
- if damping:
130
- s_k, y_k, ys_k = _adaptive_damping(s_k, y_k, ys_k, init_damping=init_damping, eigval_bounds=eigval_bounds)
131
-
132
- if ys_k > 1e-10:
133
- s_history.append(s_k)
134
- y_history.append(y_k)
135
- sy_history.append(ys_k)
136
-
137
- prev_params.copy_(params)
138
-
139
- # use previous s_k, y_k pair, samples gradient at current batch before and after updating parameters
140
- elif sample_grads == 'after':
141
- if len(s_history) == 0:
142
- s_k = None; y_k = None; ys_k = None
143
- else:
144
- s_k = s_history[-1]
145
- y_k = y_history[-1]
146
- ys_k = s_k.dot(y_k)
147
-
148
- # this will run after params are updated by Modular after running all future modules
149
- vars.post_step_hooks.append(
150
- partial(
151
- _store_sk_yk_after_step_hook,
152
- prev_params=params.clone(),
153
- prev_grad=update.clone(),
154
- damping=damping,
155
- init_damping=init_damping,
156
- eigval_bounds=eigval_bounds,
157
- s_history=s_history,
158
- y_history=y_history,
159
- sy_history=sy_history,
160
- ))
161
-
162
- else:
163
- raise ValueError(sample_grads)
164
-
165
- # step with inner module before applying preconditioner
166
- if self.children:
167
- update = TensorList(apply(self.children['inner'], tensors=update, params=params, grads=vars.grad, vars=vars))
168
-
169
- # tolerance on gradient difference to avoid exploding after converging
170
- if tol is not None:
171
- if y_k is not None and y_k.abs().global_max() <= tol:
172
- vars.update = update # may have been updated by inner module, probably makes sense to use it here?
173
- return vars
174
-
175
- # lerp initial H^-1 @ q guess
176
- z_ema = None
177
- if z_beta is not None:
178
- z_ema = self.get_state('z_ema', params=vars.params, cls=TensorList)
179
-
180
- # precondition
181
- dir = lbfgs(
182
- tensors_=as_tensorlist(update),
183
- s_history=s_history,
184
- y_history=y_history,
185
- sy_history=sy_history,
186
- y_k=y_k,
187
- ys_k=ys_k,
188
- z_beta = z_beta,
189
- z_ema = z_ema,
190
- step=step
191
- )
192
-
193
- vars.update = dir
194
-
195
- return vars
196
-
@@ -1,131 +0,0 @@
1
- docs/source/conf.py,sha256=jd80ZT2IdCx7nlQrpOTJL8UhGBNm6KYyXlpp0jmRiAw,1849
2
- tests/test_identical.py,sha256=NZ7A8Rm1U9Q16d-cG2G_wccpPtNALyoKYJt9qMownMc,11568
3
- tests/test_module.py,sha256=qX3rjdSJsbA8JO17bPTUIDspe7bg2dogqxMw__KV7SU,2039
4
- tests/test_opts.py,sha256=TZVaCv2ZLdHSkL6snTEkqhTMHqlcO55L-c56k6Hh4xc,40850
5
- tests/test_tensorlist.py,sha256=Djpr5C0T5d_gz-j-P-bpo_X51DC4twbtT9c-xDSFbP0,72438
6
- tests/test_utils_optimizer.py,sha256=bvC0Ehvs2L8fohpyIF5Vfr9OKTycpnODWLPflXilU1c,8414
7
- tests/test_vars.py,sha256=3p9dsHk7SJpMd-WRD0ziBNq5FEHRBJGSxbMLD8ES4J0,6815
8
- torchzero/__init__.py,sha256=L7IJ1qZ3o8E9oRwlJZBK2_2yII_eeGEk57Of6EfVbrk,112
9
- torchzero/core/__init__.py,sha256=2JRyeGZprTexAeEPQOIl9fLFGBwzvya-AwKyt7XAmGQ,210
10
- torchzero/core/module.py,sha256=Razw3c71Kfegznm0vQxsii1KuTUCPBC9UGyq2v-KX4M,27568
11
- torchzero/core/preconditioner.py,sha256=n9oh7kZdt1kU3Wh472lnvLrsXwhR5Wqe6lIp7JuAJ_I,6336
12
- torchzero/core/transform.py,sha256=ajNJcX45ds-_lc5CqxgLfEFGil6_BYLerB0WvoTi8rM,10303
13
- torchzero/modules/__init__.py,sha256=BDeyuSd2s1WFUUXIo3tGTNp4aYp4A2B94cydpPW24nY,332
14
- torchzero/modules/functional.py,sha256=HXNzmPe7LsPadryEm7zrcEKqGej16QDwSgBkbEvggFM,6492
15
- torchzero/modules/clipping/__init__.py,sha256=ZaffMF7mIRK6hZSfuZadgjNTX6hF5ANiLBny2w3S7I8,250
16
- torchzero/modules/clipping/clipping.py,sha256=I-5utyrqdKtF5yaH-9m2F3UqdfpPmA2bSSFUAZ_d60Q,12544
17
- torchzero/modules/clipping/ema_clipping.py,sha256=pLeNuEBLpJ74io2sHn_ZVYaQ6ydEfhpVfVEX2bFttd0,5947
18
- torchzero/modules/clipping/growth_clipping.py,sha256=OD-kdia2Rn-DvYlYV6EZlGPDVTh9tj-W9mpiZPc3hOQ,6772
19
- torchzero/modules/experimental/__init__.py,sha256=fEPDYDl7qhaFoferDRmG3ehwuqSvx4Vt2uOz0Y7h4to,483
20
- torchzero/modules/experimental/absoap.py,sha256=Z4MS4pDPSQ9IaTk8g57OfrsWcYVOT72x533KKtn2Zxk,13512
21
- torchzero/modules/experimental/adadam.py,sha256=OAPF1-NUbg79V3QOTYzsQlRC97C7XHj5boOLDqLz3PE,4029
22
- torchzero/modules/experimental/adamY.py,sha256=g1pAHwgdyDdKvObZ67lCSc36L99tl5jlQgOr4lMJCDo,4595
23
- torchzero/modules/experimental/adasoap.py,sha256=JdV6rB9xfqL3vbHpZCLmkJZKRObZ1nVoEmabtIeVT3E,11195
24
- torchzero/modules/experimental/algebraic_newton.py,sha256=sq5ZD_j_EtlxIjNnS0rKKwTSG_JuwsZOg9ZMMQTuQm0,5154
25
- torchzero/modules/experimental/curveball.py,sha256=Uk30uLEztTHD5IUJLJm9Nn3x31DF9kQHmeLFhc065us,3262
26
- torchzero/modules/experimental/gradmin.py,sha256=iJmEvDEdVdck0C-94pY3iGxnIoNv6Fu6vj3f7lS6aQM,3686
27
- torchzero/modules/experimental/newton_solver.py,sha256=iGI2LHLaZd2ovpbq1Vogs76os0zWG7VwM7nUz8RzxVg,3071
28
- torchzero/modules/experimental/reduce_outward_lr.py,sha256=kjtRwepBGBca77ToM-lw3b8ywptMtmSdC_jQfjJAwlY,1184
29
- torchzero/modules/experimental/soapy.py,sha256=Ishd2Jj6BbhjrLyC48zf-cjMmA1kJb_uKXESQBIML_s,10990
30
- torchzero/modules/experimental/spectral.py,sha256=8_n208V2yPY3z5pCym-FvwO7DGFhozNgWlpIBtQSdrI,12139
31
- torchzero/modules/experimental/structured_newton.py,sha256=uWczR-uAXHaFwf0mlOThv2sLG0irH6Gz1hKlGHtPAj4,3386
32
- torchzero/modules/experimental/subspace_preconditioners.py,sha256=WnHpga7Kx4-N2xU5vP3uUHRER70ymyNJCWbSx2zXWOk,4976
33
- torchzero/modules/experimental/tropical_newton.py,sha256=uq66ouhgrgc8iYGozDQ3_rtbubj8rKRwb1jfcdnlpHg,4903
34
- torchzero/modules/grad_approximation/__init__.py,sha256=DVFjf0cXuF70NA0nJ2WklpP01PQgrRZxUjUQjjQeSos,195
35
- torchzero/modules/grad_approximation/fdm.py,sha256=2PNNBIMup1xlOwLFAwAS3xAVd-7GGVyerMeKH1ug9LQ,3591
36
- torchzero/modules/grad_approximation/forward_gradient.py,sha256=Kb8RNGAIb2tKzgofnEn4pQjS7TPq824B_P14idyy8e0,3564
37
- torchzero/modules/grad_approximation/grad_approximator.py,sha256=Pa1Lv52T7WawUJUUA3IHm7mVypBQXLbjc5_15FkVwnQ,2938
38
- torchzero/modules/grad_approximation/rfdm.py,sha256=s7OSMFnIEr43WKCT0TXdgzz_6odOkRN0BcKWkFbbPAE,10189
39
- torchzero/modules/line_search/__init__.py,sha256=nkOUPLe88wE91ICEhprl2pJsvaKtbI3KzYOdT83AGsg,253
40
- torchzero/modules/line_search/backtracking.py,sha256=FG_-KAN9whvBNZyhDa5-ta46IQFm8hagVvaPTXCCV88,6307
41
- torchzero/modules/line_search/line_search.py,sha256=4z0fHJAGAZT2IVAOUxZetAszPtNuXfXdFzs1_WUWT2c,7296
42
- torchzero/modules/line_search/scipy.py,sha256=7tfxXT8RAIHpRv-e5w9C8RNvkvgwgxHZaWI25RjTYy0,1156
43
- torchzero/modules/line_search/strong_wolfe.py,sha256=Y6UXd2Br30YWta1phZx1wiSsFQC6wbgmvOpVITcmJpw,7504
44
- torchzero/modules/line_search/trust_region.py,sha256=_zOje00BLvIMi0d5H9qZavqf3MWeB48Q-WosgXu3Ef4,2349
45
- torchzero/modules/lr/__init__.py,sha256=pNxbBUGzDp24O6g7pu1bRg1tzh4eh-mSxVbhOItKHpc,90
46
- torchzero/modules/lr/lr.py,sha256=wlubixzgxnm4ucyiEtGWzQOskaLXLInvSaR0sGKxto8,2161
47
- torchzero/modules/lr/step_size.py,sha256=0HWYAYhVqWCCYe_-guBnMaOpqLbsMm4-F6bRFjltBsc,4036
48
- torchzero/modules/momentum/__init__.py,sha256=pSD7vxu8PySrYOSHQMi3C9heYdcQr8y6WC_rwMybZm0,544
49
- torchzero/modules/momentum/averaging.py,sha256=hyH5jzvYTbB1Vcjx0j_v4dtPp54GUUDOZYVDADGjcfE,2672
50
- torchzero/modules/momentum/cautious.py,sha256=QCoBXpYcIUOrgY6XXHA30m0-MVy7iGCGxZGFLyDwqkc,5841
51
- torchzero/modules/momentum/ema.py,sha256=4ubPpq9TL0oQZ5_eXBwU5oRbxV3faHMEM1a_kv8vRqI,7733
52
- torchzero/modules/momentum/experimental.py,sha256=ze9oxqxdmqRFQyVdG7iBA-hICft5mxeAM6GCTQ4ewes,6352
53
- torchzero/modules/momentum/matrix_momentum.py,sha256=IQjCp2Kb53bCaReM7fHBil_pwH9oiH029YkWFq0OIDw,4894
54
- torchzero/modules/momentum/momentum.py,sha256=hcmmYysGItb3b7MBBVhoODh7p4Fyit68cZzD0NUBmvA,1540
55
- torchzero/modules/ops/__init__.py,sha256=hxMZFSXX7xvitXkuBiYykVGX3p03Xprm_QA2CMg4eW8,1601
56
- torchzero/modules/ops/accumulate.py,sha256=YGI11YxgTWvIBq5maDRWiSA-v-FS-XoaSYPU2SSrBY8,2759
57
- torchzero/modules/ops/binary.py,sha256=-b0yvKvfDx9-HcaaxLWzg5C6rUl24oP3OltSF-iXi6w,9731
58
- torchzero/modules/ops/debug.py,sha256=9sJOHRMwTMaOgOi2QFwCH7g2WPF1o3oyouPJO-MQQg4,862
59
- torchzero/modules/ops/misc.py,sha256=xdxnGbRArWBqzyufUdrCQH-mAI9utRF0zxcvWCkEfZc,16383
60
- torchzero/modules/ops/multi.py,sha256=P7mSG0LnDMkuZNSgtpHRNgqglqksrdxITCzkhmEjqxU,5742
61
- torchzero/modules/ops/reduce.py,sha256=xvFHZG5Wf7KxfFLkynFGBOK6xywyTXsbCasW6h2OYAU,5695
62
- torchzero/modules/ops/split.py,sha256=fFcDnJZ-e46cx_fx_TkGlVsFYOL1Y8UAp_pUPJOOdm4,2303
63
- torchzero/modules/ops/switch.py,sha256=5idKd9xBP-KbqZjWBcr6ZDjso8BRpTNQYJg4xKWwmng,2511
64
- torchzero/modules/ops/unary.py,sha256=h3MXS6jydZjfFetjaBCWCUWTXdQcNKnxEC6uGS6yh3c,4794
65
- torchzero/modules/ops/utility.py,sha256=p-mc2j1mQEMLxp4brnAnzgmK6VKbSnYd2U8vkAwTKd8,3117
66
- torchzero/modules/optimizers/__init__.py,sha256=BbT2nhIt4p74t1cO8ziQgzqZHaLvyuleXQbccugd06M,554
67
- torchzero/modules/optimizers/adagrad.py,sha256=1DIBJ_7gJ35qidXMK4IkHYF_37Bl9Ptl9mAgfOq6YAk,4834
68
- torchzero/modules/optimizers/adam.py,sha256=xctnENJ9rcpv2sis4zAGPGoy-ccJC1iVl8SvBynaG50,4093
69
- torchzero/modules/optimizers/lion.py,sha256=eceNfITCozqYob0thWbIV7AdY1yAIJMqb4GJfB8a1SA,1087
70
- torchzero/modules/optimizers/muon.py,sha256=m3LpwD6AF7E-1v3VVPHAN8S_tPTTFKZ5RpkzKea4K4g,9598
71
- torchzero/modules/optimizers/orthograd.py,sha256=5BLnNJTYuGUClHmlxaXZ1jNvBR4zSFDGG8nM20lZdhk,2046
72
- torchzero/modules/optimizers/rmsprop.py,sha256=d10Y9Ck-391tVysO3xMHg3g2Pe0UEZplgebEyDYi3Z4,4333
73
- torchzero/modules/optimizers/rprop.py,sha256=n4k5-9F3ppH0Xl-4l4vNXfqVf2r67vMPCkstUaQKPLw,10974
74
- torchzero/modules/optimizers/shampoo.py,sha256=AHHV6d71DqKDPCg52ShWIPIRSGtWkMc1v1XwXgDG3qY,8606
75
- torchzero/modules/optimizers/soap.py,sha256=Kf2BAtIf2QY1V2ZJcUjRLcp2WfIVLd3mNclnaT3Nmds,11520
76
- torchzero/modules/optimizers/sophia_h.py,sha256=8pSlYVm66xWplzdP8MX3MCTzzIYHsxGzDEXJKA03Zgg,4279
77
- torchzero/modules/projections/__init__.py,sha256=OCxlh_-Tx-xpl31X03CeFJH9XveH563oEsWc8rUvX0A,196
78
- torchzero/modules/projections/dct.py,sha256=wxaEV6dTNiOqW_n2UHX0De6mMXTKDXK6UNcMNI4Rogk,2373
79
- torchzero/modules/projections/fft.py,sha256=OpCcEM1-A2dgk1umwRsBsvK7ObiHtsBKlkkcw0IX83Q,2961
80
- torchzero/modules/projections/galore.py,sha256=c9CZ0kHxpKEoyfc_lnmeHOkNp55jCppb7onN5YmWnN8,242
81
- torchzero/modules/projections/projection.py,sha256=aYufSD3ftRUqVScPmqxwEFgP1P8ioxM8z9eyzaL7d10,10147
82
- torchzero/modules/projections/structural.py,sha256=QaCGHmzHCXj46sM-XZ5XlYU9BnuRKI2ReR3LE8y2R4g,5740
83
- torchzero/modules/quasi_newton/__init__.py,sha256=0iOlX73PHj9lQS3_2cJ5lyCdas904MnFfIvR8Popvzw,402
84
- torchzero/modules/quasi_newton/cg.py,sha256=lIJvfWAZ08r0o4uqaJnRG6pvcE2kBkJUkZ1MK37KMTk,9602
85
- torchzero/modules/quasi_newton/lbfgs.py,sha256=SMgesPMZ4ubVeG7R395SnAb5ffkyPHbzSQMqPlLGI7U,9211
86
- torchzero/modules/quasi_newton/lsr1.py,sha256=XmYyYANzQgQuFtOMW59znQrS-mprGRXazicfB9JAup8,6059
87
- torchzero/modules/quasi_newton/olbfgs.py,sha256=2YAOXlMnPGw22sNcIMH1hmggzAXQRbN59RSPUZNKUZY,8352
88
- torchzero/modules/quasi_newton/quasi_newton.py,sha256=rUp4s3MbACcOjwpz00TAjl-olif50voTmC16vv5XrSE,17496
89
- torchzero/modules/quasi_newton/experimental/__init__.py,sha256=3qpZGgdsx6wpoafWaNWx-eamRl1FuxVCWQZq8Y7Cl98,39
90
- torchzero/modules/quasi_newton/experimental/modular_lbfgs.py,sha256=ec6JKYX89xA_UlY9VrMB3hBjDyNKwkalS_4JQGA1qOY,10762
91
- torchzero/modules/second_order/__init__.py,sha256=jolCGaIVkID9hpxgx0Tc22wgjVlwuWekWjKTMe5jKXw,114
92
- torchzero/modules/second_order/newton.py,sha256=xxkrhFK4i5I9oOX3AGGh_6bXNDUSFq4D0pw3c7qgEd8,5925
93
- torchzero/modules/second_order/newton_cg.py,sha256=PILHRf2koop_cywE1RNGukT16alDO7prC4C3HlZcW30,2861
94
- torchzero/modules/second_order/nystrom.py,sha256=zdLSTQ_S5VViUt2sAmFNoDCCHKmHP2A7112czkZNlUk,6051
95
- torchzero/modules/smoothing/__init__.py,sha256=tUTGN0A-EQC7xuLV2AuHFWk-t7D6jIJlpV_3qyfRqLk,80
96
- torchzero/modules/smoothing/gaussian.py,sha256=YlT_G4MqAVkiWG56RHAwgt5SSPISpvQZQbSLh8mhF3I,6153
97
- torchzero/modules/smoothing/laplacian.py,sha256=Bfrs7D59SfdU7j-97UBKD1hs0obC-ZgjJvG7oKwaa0o,5065
98
- torchzero/modules/weight_decay/__init__.py,sha256=VdJfEx3uk8wYGCpMjYSeudXyGX8ONqsQYoBCE3cdM1U,72
99
- torchzero/modules/weight_decay/weight_decay.py,sha256=p6jGD3hgC_rmZXiWYr7_IZWHMdVJJaT_bcHHzcdXSxU,1912
100
- torchzero/modules/wrappers/__init__.py,sha256=6b5Ac-8u18IVp_Jnw1T1xQExwpQhpQ0JwNV9GyC_Yj8,31
101
- torchzero/modules/wrappers/optim_wrapper.py,sha256=mcoQCUJwpMJuCDv03nDa0jZIb3Y0CyaeE1kNcJQozfo,3582
102
- torchzero/optim/__init__.py,sha256=aXf7EkywqYiR50I4QeeVXro9aBhKiqfbY_BCia59sgU,46
103
- torchzero/optim/utility/__init__.py,sha256=pUacok4XmebfxofE-QWZLgViajsU-3JkXcWi9OS-Jrw,24
104
- torchzero/optim/utility/split.py,sha256=ZbazNuMTYunm75V_5ard0A_LletGaYAg-Pm2rANJKrE,1610
105
- torchzero/optim/wrappers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
- torchzero/optim/wrappers/nevergrad.py,sha256=2jHWQiWGjaffAqhJotMwOt03OtW-L57p8OesD2gVVow,3949
107
- torchzero/optim/wrappers/nlopt.py,sha256=ZoHBf51OhwgAaExxmoFtvP8GqO9uBHdEsc4HLm0wcic,7588
108
- torchzero/optim/wrappers/scipy.py,sha256=0BNBlHCbeTslXkXhnKvhuvJfNO7_CHFa2AXruYySnzM,14561
109
- torchzero/utils/__init__.py,sha256=By___ngB1bcnrSZiJanvtKk8QFrPmLRhTOrkFYP2MU4,929
110
- torchzero/utils/compile.py,sha256=N8AWLv_7oBUHYornmvvx_L4uynjiD-x5Hj1tBwei3-w,5127
111
- torchzero/utils/derivatives.py,sha256=S4Vh2cwE2h6yvhqu799AjR4GVHOEg7yApH3SataKxnA,16881
112
- torchzero/utils/numberlist.py,sha256=cbG0UsSb9WCRxVhw8sd7Yf0bDy_gSqtghiJtkUxIO6U,6139
113
- torchzero/utils/ops.py,sha256=n4Su1sbgTzlHczuPEHkuWenTtNBCa_MvlQ_hCZkIPnQ,314
114
- torchzero/utils/optimizer.py,sha256=-vuOZNu4luSZA5YtwC_7s-G2FvHKnM2k5KqC6bC_hcM,13097
115
- torchzero/utils/optuna_tools.py,sha256=F-1Xg0n_29MVEb6lqgUFFNIl9BNJ6MOdIJPduoNH4JU,1325
116
- torchzero/utils/params.py,sha256=nQo270aOURU7rJ_D102y2pSXbzhJPK0Z_ehx4mZBMes,5784
117
- torchzero/utils/python_tools.py,sha256=RFBqNj8w52dpJ983pUPPDbg2x1MX_-SsBnBMffWGGIk,2066
118
- torchzero/utils/tensorlist.py,sha256=qSbiliVo1euFAksdHHHRbPUdYYxfkw1dvhpXj71wGy0,53162
119
- torchzero/utils/torch_tools.py,sha256=ohqnnZRlqdfp5PAfMSbQDIEKygW0_ARjxSEBp3Zo9nU,4756
120
- torchzero/utils/linalg/__init__.py,sha256=Dzbho3_z7JDdKzYD-QdLArg0ZEoC2BVGdlE3JoAnXHQ,272
121
- torchzero/utils/linalg/benchmark.py,sha256=wiIMn-GY2xxWbHVf8CPbJddUPeUPq9OUDkvbp1iILYI,479
122
- torchzero/utils/linalg/matrix_funcs.py,sha256=-LecWrPWbJvfeCgIzUhfWARa2aSZvJ12lHX7Jno38O4,3099
123
- torchzero/utils/linalg/orthogonalize.py,sha256=mDCkET7qgDZqf_y6oPYAK3d2L5HrB8gzOFPl0YoONaY,399
124
- torchzero/utils/linalg/qr.py,sha256=L-RXuYV-SIHI-Llq4y1rQ_Tz-yamds0_QNZeHapbjNE,2507
125
- torchzero/utils/linalg/solve.py,sha256=P0PMi0zro3G3Rd0X-JeoLk7tqYDB0js0aB4bpQ0OABU,5235
126
- torchzero/utils/linalg/svd.py,sha256=wBxl-JSciINV-N6zvM4SGdveqMr6idq51h68LyQQRYg,660
127
- torchzero-0.3.9.dist-info/licenses/LICENSE,sha256=r9ZciAoZoqKC_FNADE0ORukj1p1XhLXEbegdsAyqhJs,1087
128
- torchzero-0.3.9.dist-info/METADATA,sha256=aENIaMgy94tD6nakRWfApleVSy6bxW8-q3-mQeVSeGA,13941
129
- torchzero-0.3.9.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
130
- torchzero-0.3.9.dist-info/top_level.txt,sha256=YDdpIOb7HyKV9THOtOYsFFMTbxvCO0kiol4-83tDj-A,21
131
- torchzero-0.3.9.dist-info/RECORD,,