Floquet-Stabilized Periodic Training Dynamics / search_pairs.py

✓✓ Beats tuned baseline

Raw ⬇ ZIP
 1import numpy as np
 2from scipy.linalg import expm, eigvals
 3rng=np.random.default_rng(7)
 4def edge(a): return np.max(np.real(eigvals(a)))
 5def gam(a,b,T):
 6 p=expm(b*T/2)@expm(a*T/2)
 7 return np.log(np.max(np.abs(eigvals(p))))/T
 8for i in range(20000):
 9 a=rng.normal(0,5,(2,2)); b=rng.normal(0,5,(2,2))
10 ea,eb=edge(a),edge(b)
11 if ea<=.2 or eb<=.2: continue
12 av=edge((a+b)/2)
13 vals=[gam(a,b,t) for t in [.01,.03,.1,.2,.5,1,2,5,10]]
14 if av>0 and min(vals)<-.05:
15  print('found',i,'edges',ea,eb,'avg',av,'comm',np.linalg.norm(a@b-b@a),'vals',vals)
16  print(a);print(b);break
17else: print('none')