Dissipation–Memory Budget for Stochastic RNNs / analyze_results.py
Mechanism failed
1import json
2import numpy as np
3r=json.load(open('results.json'))
4rows=r['budget_sweep']
5for rate in sorted(set(x['rate'] for x in rows)):
6 q=sorted([x for x in rows if x['rate']==rate],key=lambda x:x['freq'])
7 sl=np.polyfit(np.log([x['v2'] for x in q[:3]]),np.log([x['epsilon'] for x in q[:3]]),1)[0]
8 print('rate',rate,'slow epsilon-v2 slope',sl)
9for freq in sorted(set(x['freq'] for x in rows)):
10 q=[x for x in rows if x['freq']==freq]
11 sl=np.polyfit(np.log([x['sigma'] for x in q]),np.log([x['epsilon'] for x in q]),1)[0]
12 print('freq',freq,'epsilon-sigma slope',sl)
13for f in [0.03,0.1,0.3]:
14 q=sorted([x for x in rows if x['freq']==f],key=lambda x:x['rate'])
15 chosen=next((x for x in q if x['budget_ratio']>=.5),q[-1])
16 base=[x for x in q if x['rate']==1][0]
17 print('controller',f,'selected_rate',chosen['rate'],'baseline_mse',base['epsilon'],'controller_mse',chosen['epsilon'])
18print('ratio_summary',min(x['budget_ratio'] for x in rows),np.median([x['budget_ratio'] for x in rows]),max(x['budget_ratio'] for x in rows))