1+ """Utils to load the computed Hessian information. Data management."""
2+ import torch
3+ import numpy as np
4+ import os , os .path , sys
5+ from os .path import join
6+ if sys .platform == "linux" :
7+ summarydir = r"/scratch/binxu/Hessian_summary"
8+ else :
9+ summarydir = r"E:\OneDrive - Washington University in St. Louis\Hessian_summary"
10+
11+ def load_Hcorrmat (GAN , spec = None , nandiag = True ):
12+ matchstr = GAN
13+ if matchstr not in corrmat_npz_dict :
14+ print (list (corrmat_npz_dict ), " Choose from these." )
15+ Hccpath = join (summarydir , corrmat_npz_dict [matchstr ])
16+ with np .load (Hccpath ) as data :
17+ print (list (data ))
18+ corr_mat_log , corr_mat_lin , = data ['corr_mat_log' ], data ['corr_mat_lin' ]
19+ corr_mat_log_nodiag , corr_mat_lin_nodiag = corr_mat_log .copy (), corr_mat_lin .copy ()
20+ np .fill_diagonal (corr_mat_log_nodiag , np .nan )
21+ np .fill_diagonal (corr_mat_lin_nodiag , np .nan )
22+ cclogmean , cclogstd = np .nanmean (corr_mat_log ), np .nanstd (corr_mat_log )
23+ cclinmean , cclinstd = np .nanmean (corr_mat_lin ), np .nanstd (corr_mat_lin )
24+ print ("log scale corr %.3f(%.3f), lin scale corr %.3f(%.3f)" % (cclogmean , cclogstd , cclinmean , cclinstd ))
25+ if nandiag :
26+ return corr_mat_log_nodiag , corr_mat_lin_nodiag
27+ else :
28+ return corr_mat_log , corr_mat_lin
29+
30+ def load_Haverage (GAN , spec = None , descend = None , abssort = True ):
31+ if os .path .exists (GAN ):
32+ with np .load (GAN ) as data :
33+ H , eva , evc = data ["H_avg" ], data ["eva_avg" ], data ["evc_avg" ]
34+ else :
35+ # if spec is None:
36+ matchstr = GAN
37+ if matchstr not in Havg_npz_dict :
38+ print (list (Havg_npz_dict ), " Choose from these." )
39+ Hpath = join (summarydir , Havg_npz_dict [matchstr ])
40+ with np .load (Hpath ) as data :
41+ print (list (data ))
42+ if GAN == "BigGAN" :
43+ if spec == "class" :
44+ H , eva , evc = data ["H_clas_avg" ], data ["eigvals_clas_avg" ], data ["eigvects_clas_avg" ]
45+ elif spec == "noise" :
46+ H , eva , evc = data ["H_nois_avg" ], data ["eigvals_nois_avg" ], data ["eigvects_nois_avg" ]
47+ else :
48+ H , eva , evc = data ["H_avg" ], data ["eigvals_avg" ], data ["eigvects_avg" ]
49+ elif GAN == "fc6GAN" :
50+ H , eva , evc = data ['H_avg' ], data ['eigv_avg' ], data ['eigvect_avg' ]
51+ else :
52+ H , eva , evc = data ["H_avg" ], data ["eva_avg" ], data ["evc_avg" ]
53+ if descend is None : # if not descent then ascend by default.
54+ return H , eva , evc
55+ if abssort :
56+ eva = np .abs (eva )
57+ if descend :
58+ sort_idx = np .argsort (- eva )
59+ else :
60+ sort_idx = np .argsort (eva )
61+ eva = eva [sort_idx ].copy ()
62+ evc = evc [:, sort_idx ].copy ()
63+ return H , eva , evc
64+
65+ Havg_npz_dict = {"fc6GAN" : "fc6GAN/Evolution_Avg_Hess.npz" ,
66+ "DCGAN" : "DCGAN/H_avg_DCGAN.npz" ,
67+ "BigGAN" : "BigGAN/H_avg_1000cls.npz" ,
68+ "BigGAN_noise" : "BigGAN/H_avg_1000cls.npz" ,
69+ "BigGAN_class" : "BigGAN/H_avg_1000cls.npz" ,
70+ "BigBiGAN" : "BigBiGAN/H_avg_BigBiGAN.npz" ,
71+ "PGGAN" : "PGGAN/H_avg_PGGAN.npz" ,
72+ "StyleGAN-Face*" : "StyleGAN/H_avg_StyleGAN.npz" ,
73+ "StyleGAN2-Face512*" : "StyleGAN2/H_avg_ffhq-512-avg-tpurun1.npz" ,
74+ "StyleGAN2-Face256*" : "StyleGAN2/H_avg_ffhq-256-config-e-003810.npz" ,
75+ "StyleGAN2-Cat256*" : "StyleGAN2/H_avg_stylegan2-cat-config-f.npz" ,
76+ "StyleGAN2-Face1024*" : "StyleGAN2_Fix/stylegan2-face1024-noise/H_avg_StyleGAN2-Face1024_Z.npz" ,
77+ "StyleGAN-Face_Z" : "StyleGAN_Fix/StyleGAN_Face256_fix/H_avg_StyleGAN_Face256_fix.npz" ,
78+ "StyleGAN2-Face512_Z" : "StyleGAN2_Fix/ffhq-512-avg-tpurun1_fix/H_avg_ffhq-512-avg-tpurun1_fix.npz" ,
79+ "StyleGAN2-Face256_Z" : "StyleGAN2_Fix/ffhq-256-config-e-003810_fix/H_avg_ffhq-256-config-e-003810_fix.npz" ,
80+ "StyleGAN2-Cat256_Z" : "StyleGAN2_Fix/stylegan2-cat-config-f_fix/H_avg_stylegan2-cat-config-f_fix.npz" ,
81+ "StyleGAN2-Face1024_Z" : "StyleGAN2_Fix/stylegan2-ffhq-config-f_fix/H_avg_StyleGAN_FFHQ1024.npz" ,
82+ "StyleGAN-Face_W" : "StyleGAN_Fix/StyleGAN_Face256_W_fix/H_avg_StyleGAN_Face256_W_fix.npz" ,
83+ "StyleGAN2-Face512_W" : "StyleGAN2_Fix/ffhq-512-avg-tpurun1_W_fix/H_avg_ffhq-512-avg-tpurun1_W_fix.npz" ,
84+ "StyleGAN2-Face256_W" : "StyleGAN2_Fix/ffhq-256-config-e-003810_W_fix/H_avg_ffhq-256-config-e-003810_W_fix.npz" ,
85+ "StyleGAN2-Cat256_W" : "StyleGAN2_Fix/stylegan2-cat-config-f_W_fix/H_avg_stylegan2-cat-config-f_W_fix.npz" ,
86+ "WaveGAN_piano_MSE" : "WaveGAN/H_avg_WaveGAN_piano_MSE.npz" ,
87+ "WaveGAN_piano_STFT" : "WaveGAN/H_avg_WaveGAN_piano_STFT.npz" ,
88+ }
89+
90+ spectra_npz_dict = {"fc6GAN" : "FC6GAN/spectra_col_evol.npz" ,
91+ "DCGAN" : "DCGAN/spectra_col_BP.npz" ,
92+ "BigGAN" : "BigGAN/spectra_col.npz" ,
93+ "BigGAN_noise" : "BigGAN/spectra_col.npz" ,
94+ "BigGAN_class" : "BigGAN/spectra_col.npz" ,
95+ "BigBiGAN" : "BigBiGAN/spectra_col.npz" ,
96+ "PGGAN" : "PGGAN/spectra_col_BP.npz" ,
97+ "StyleGAN-Face*" : "StyleGAN/spectra_col_face256_BP.npz" ,
98+ "StyleGAN2-Face512*" : "StyleGAN2/spectra_col_FFHQ512.npz" ,
99+ "StyleGAN2-Face256*" : "StyleGAN2/spectra_col_ffhq-256-config-e-003810_BP.npz" ,
100+ "StyleGAN2-Cat256*" : "StyleGAN2/spectra_col_stylegan2-cat-config-f_BP.npz" ,
101+ "StyleGAN-Face_Z" : "StyleGAN_Fix/StyleGAN_Face256_fix/spectra_col_StyleGAN_Face256_fix.npz" ,
102+ "StyleGAN2-Face512_Z" : "StyleGAN2_Fix/ffhq-512-avg-tpurun1_fix/spectra_col_ffhq-512-avg-tpurun1_fix.npz" ,
103+ "StyleGAN2-Face256_Z" : "StyleGAN2_Fix/ffhq-256-config-e-003810_fix/spectra_col_ffhq-256-config-e-003810_fix.npz" ,
104+ "StyleGAN2-Cat256_Z" : "StyleGAN2_Fix/stylegan2-cat-config-f_fix/spectra_col_stylegan2-cat-config-f_fix.npz" ,
105+ "StyleGAN2-Face1024_Z" : "StyleGAN2_Fix/stylegan2-ffhq-config-f_fix/spectra_col_StyleGAN_FFHQ1024.npz" ,
106+ "StyleGAN-Face_W" : "StyleGAN_Fix/StyleGAN_Face256_W_fix/spectra_col_StyleGAN_Face256_W_fix.npz" ,
107+ "StyleGAN2-Face512_W" : "StyleGAN2_Fix/ffhq-512-avg-tpurun1_W_fix/spectra_col_ffhq-512-avg-tpurun1_W_fix.npz" ,
108+ "StyleGAN2-Face256_W" : "StyleGAN2_Fix/ffhq-256-config-e-003810_W_fix/spectra_col_ffhq-256-config-e-003810_W_fix.npz" ,
109+ "StyleGAN2-Cat256_W" : "StyleGAN2_Fix/stylegan2-cat-config-f_W_fix/spectra_col_stylegan2-cat-config-f_W_fix.npz" ,
110+ "WaveGAN_piano_MSE" : "WaveGAN/spectra_col_WaveGAN_piano_MSE.npz" ,
111+ "WaveGAN_piano_STFT" : "WaveGAN/spectra_col_WaveGAN_piano_STFT.npz" ,
112+ }
113+
114+
115+ corrmat_npz_dict = {"fc6GAN" : "fc6GAN/evol_hess_corr_mat.npz" ,
116+ "DCGAN" : "DCGAN/Hess__corr_mat.npz" ,
117+ "BigGAN" : "BigGAN/Hess_all_consistency_corr_mat.npz" ,
118+ "BigGAN_noise" : "BigGAN/Hess_noise_consistency_corr_mat.npz" ,
119+ "BigGAN_class" : "BigGAN/Hess_class_consistency_corr_mat.npz" ,
120+ "BigBiGAN" : "BigBiGAN/evol_hess_corr_mat.npz" ,
121+ "PGGAN" : "PGGAN/Hess__corr_mat.npz" ,
122+ "StyleGAN-Face*" : "StyleGAN/Hess__corr_mat.npz" ,
123+ "StyleGAN2-Face512*" : "StyleGAN2/Hess_ffhq-512-avg-tpurun1_corr_mat.npz" ,
124+ "StyleGAN2-Face256*" : "StyleGAN2/Hess_ffhq-256-config-e-003810_corr_mat.npz" ,
125+ "StyleGAN2-Cat256*" : "StyleGAN2/Hess_stylegan2-cat-config-f_corr_mat.npz" ,
126+ "StyleGAN-Face_Z" : "StyleGAN_Fix/StyleGAN_Face256_fix/Hess_StyleGAN_Face256_fix_corr_mat.npz" ,
127+ "StyleGAN2-Face512_Z" : "StyleGAN2_Fix/ffhq-512-avg-tpurun1_fix/Hess_ffhq-512-avg-tpurun1_fix_corr_mat.npz" ,
128+ "StyleGAN2-Face256_Z" : "StyleGAN2_Fix/ffhq-256-config-e-003810_fix/Hess_ffhq-256-config-e-003810_fix_corr_mat.npz" ,
129+ "StyleGAN2-Cat256_Z" : "StyleGAN2_Fix/stylegan2-cat-config-f_fix/Hess_stylegan2-cat-config-f_fix_corr_mat.npz" ,
130+ "StyleGAN2-Face1024_Z" : "StyleGAN2_Fix/stylegan2-ffhq-config-f_fix/Hess_StyleGAN_FFHQ1024_corr_mat.npz" ,
131+ "StyleGAN-Face_W" : "StyleGAN_Fix/StyleGAN_Face256_W_fix/Hess_StyleGAN_Face256_W_fix_corr_mat.npz" ,
132+ "StyleGAN2-Face512_W" : "StyleGAN2_Fix/ffhq-512-avg-tpurun1_W_fix/Hess_ffhq-512-avg-tpurun1_W_fix_corr_mat.npz" ,
133+ "StyleGAN2-Face256_W" : "StyleGAN2_Fix/ffhq-256-config-e-003810_W_fix/Hess_ffhq-256-config-e-003810_W_fix_corr_mat.npz" ,
134+ "StyleGAN2-Cat256_W" : "StyleGAN2_Fix/stylegan2-cat-config-f_W_fix/Hess_stylegan2-cat-config-f_W_fix_corr_mat.npz" ,
135+ "WaveGAN_piano_MSE" : "WaveGAN/Hess_WaveGAN_piano_MSE_corr_mat.npz" ,
136+ "WaveGAN_piano_STFT" : "WaveGAN/Hess_WaveGAN_piano_STFT_corr_mat.npz" ,
137+ }
138+
139+ ctrl_corrmat_npz_dict = {"fc6GAN" : "HessNetArchit/FC6GAN/Hess_FC6GAN_shuffle_evol_corr_mat.npz" ,
140+ "DCGAN" : "HessNetArchit/DCGAN/Hess_DCGAN_shuffle_corr_mat.npz" ,
141+ "BigGAN" : "HessNetArchit/BigGAN/Hess_BigGAN_shuffle_corr_mat.npz" ,
142+ # "BigGAN_noise": "HessNetArchit/BigGAN/Hess_noise_consistency_corr_mat.npz",
143+ # "BigGAN_class": "HessNetArchit/BigGAN/Hess_class_consistency_corr_mat.npz",
144+ "BigBiGAN" : None , #"HessNetArchit/BigBiGAN/Hess_BigBiGAN_shuffle_corr_mat.npz",
145+ "PGGAN" : "HessNetArchit/PGGAN/Hess_PGGAN_shuffle_corr_mat.npz" ,
146+ "StyleGAN-Face*" : "HessNetArchit/StyleGAN/Hess_StyleGAN_shuffle_corr_mat.npz" ,
147+ "StyleGAN2-Face512*" : "HessNetArchit/StyleGAN2/Hess_StyleGAN2_Face512_shuffle_corr_mat.npz" ,
148+ # "StyleGAN2-Face256*": "StyleGAN2/Hess_ffhq-256-config-e-003810_corr_mat.npz",
149+ # "StyleGAN2-Cat256*": "StyleGAN2/Hess_stylegan2-cat-config-f_corr_mat.npz",
150+ "StyleGAN-Face_Z" : "Hessian_summary/StyleGAN_Fix/StyleGAN_Face256_fix_ctrl/Hess_StyleGAN_Face256_fix_ctrl_corr_mat.npz" ,
151+ "StyleGAN2-Face512_Z" : "Hessian_summary/StyleGAN2_Fix/ffhq-512-avg-tpurun1_fix_ctrl/Hess_ffhq-512-avg-tpurun1_fix_ctrl_corr_mat.npz" ,
152+ "StyleGAN2-Face256_Z" : "Hessian_summary/StyleGAN2_Fix/ffhq-256-config-e-003810_fix_ctrl/Hess_ffhq-256-config-e-003810_fix_ctrl_corr_mat.npz" ,
153+ "StyleGAN2-Cat256_Z" : "Hessian_summary/StyleGAN2_Fix/stylegan2-cat-config-f_fix_ctrl/Hess_stylegan2-cat-config-f_fix_ctrl_corr_mat.npz" ,
154+ "StyleGAN-Face_W" : "Hessian_summary/StyleGAN_Fix/StyleGAN_Face256_W_fix_ctrl/Hess_StyleGAN_Face256_W_fix_ctrl_corr_mat.npz" ,
155+ "StyleGAN2-Face512_W" : "Hessian_summary/StyleGAN2_Fix/ffhq-512-avg-tpurun1_W_fix_ctrl/Hess_ffhq-512-avg-tpurun1_W_fix_ctrl_corr_mat.npz" ,
156+ "StyleGAN2-Face256_W" : "Hessian_summary/StyleGAN2_Fix/ffhq-256-config-e-003810_W_fix_ctrl/Hess_ffhq-256-config-e-003810_W_fix_ctrl_corr_mat.npz" ,
157+ "StyleGAN2-Cat256_W" : "Hessian_summary/StyleGAN2_Fix/stylegan2-cat-config-f_W_fix_ctrl/Hess_stylegan2-cat-config-f_W_fix_ctrl_corr_mat"
158+ ".npz" ,
159+ }
160+
161+ ctrl_Havg_npz_dict = {"fc6GAN" : "HessNetArchit/fc6GAN/H_avg_FC6GAN_shuffle_evol.npz" ,
162+ "DCGAN" : "HessNetArchit/DCGAN/H_avg_DCGAN_shuffle.npz" ,
163+ "BigGAN" : "HessNetArchit/BigGAN/H_avg_BigGAN_shuffle.npz" ,
164+ # "BigGAN_noise": "BigGAN/H_avg_1000cls.npz",
165+ # "BigGAN_class": "BigGAN/H_avg_1000cls.npz",
166+ "BigBiGAN" : "HessNetArchit/BigBiGAN/H_avg_BigBiGAN_shuffle.npz" ,
167+ "PGGAN" : "HessNetArchit/PGGAN/H_avg_PGGAN_shuffle.npz" ,
168+ "StyleGAN-Face*" : "HessNetArchit/StyleGAN/H_avg_StyleGAN_shuffle.npz" ,
169+ # "HessNetArchit/StyleGAN/H_avg_StyleGAN_wspace_shuffle.npz"
170+ "StyleGAN2-Face512*" : "HessNetArchit/StyleGAN2/H_avg_StyleGAN2_Face512_shuffle.npz" ,
171+ # "StyleGAN2-Face256*": "StyleGAN2/H_avg_ffhq-256-config-e-003810.npz",
172+ # "StyleGAN2-Cat256*": "StyleGAN2/H_avg_stylegan2-cat-config-f.npz",
173+ "StyleGAN-Face_Z" : "Hessian_summary/StyleGAN_Fix/StyleGAN_Face256_fix_ctrl/H_avg_StyleGAN_Face256_fix_ctrl.npz" ,
174+ "StyleGAN2-Face512_Z" : "Hessian_summary/StyleGAN2_Fix/ffhq-512-avg-tpurun1_fix_ctrl/H_avg_ffhq-512-avg-tpurun1_fix_ctrl.npz" ,
175+ "StyleGAN2-Face256_Z" : "Hessian_summary/StyleGAN2_Fix/ffhq-256-config-e-003810_fix_ctrl/H_avg_ffhq-256-config-e-003810_fix_ctrl.npz" ,
176+ "StyleGAN2-Cat256_Z" : "Hessian_summary/StyleGAN2_Fix/stylegan2-cat-config-f_fix_ctrl/H_avg_stylegan2-cat-config-f_fix_ctrl.npz" ,
177+ "StyleGAN-Face_W" : "Hessian_summary/StyleGAN_Fix/StyleGAN_Face256_W_fix_ctrl/H_avg_StyleGAN_Face256_W_fix_ctrl.npz" ,
178+ "StyleGAN2-Face512_W" : "Hessian_summary/StyleGAN2_Fix/ffhq-512-avg-tpurun1_W_fix_ctrl/H_avg_ffhq-512-avg-tpurun1_W_fix_ctrl.npz" ,
179+ "StyleGAN2-Face256_W" : "Hessian_summary/StyleGAN2_Fix/ffhq-256-config-e-003810_W_fix_ctrl/H_avg_ffhq-256-config-e-003810_W_fix_ctrl.npz" ,
180+ "StyleGAN2-Cat256_W" : "Hessian_summary/StyleGAN2_Fix/stylegan2-cat-config-f_W_fix_ctrl/H_avg_stylegan2-cat-config-f_W_fix_ctrl"
181+ ".npz" ,
182+ }
183+
184+ ctrl_spectra_npz_dict = {"fc6GAN" : "HessNetArchit/FC6GAN/spectra_col_FC6GAN_shuffle_evol.npz" ,
185+ "DCGAN" : "HessNetArchit/DCGAN/spectra_col_DCGAN_shuffle.npz" ,
186+ "BigGAN" : "HessNetArchit/BigGAN/spectra_col_BigGAN_shuffle.npz" ,
187+ # "BigGAN_noise": "HessNetArchit/BigGAN/spectra_col_BigGAN_shuffle.npz",
188+ # "BigGAN_class": "HessNetArchit/BigGAN/spectra_col_BigGAN_shuffle.npz",
189+ "BigBiGAN" : "HessNetArchit/BigBiGAN/spectra_col.npz" ,
190+ "PGGAN" : "HessNetArchit/PGGAN/spectra_col_PGGAN_shuffle.npz" ,
191+ "StyleGAN-Face*" : "HessNetArchit/StyleGAN/spectra_col_StyleGAN_shuffle.npz" ,
192+ "StyleGAN2-Face512*" : "HessNetArchit/StyleGAN2/spectra_col_StyleGAN2_Face512_shuffle.npz" ,
193+ # "StyleGAN2-Face256*": "StyleGAN2/spectra_col_ffhq-256-config-e-003810_BP.npz",
194+ # "StyleGAN2-Cat256*": "StyleGAN2/spectra_col_stylegan2-cat-config-f_BP.npz",
195+ "StyleGAN-Face_Z" : "Hessian_summary/StyleGAN_Fix/StyleGAN_Face256_fix_ctrl/spectra_col_StyleGAN_Face256_fix_ctrl.npz" ,
196+ "StyleGAN2-Face512_Z" : "Hessian_summary/StyleGAN2_Fix/ffhq-512-avg-tpurun1_fix_ctrl/spectra_col_ffhq-512-avg-tpurun1_fix_ctrl.npz" ,
197+ "StyleGAN2-Face256_Z" : "Hessian_summary/StyleGAN2_Fix/ffhq-256-config-e-003810_fix_ctrl/spectra_col_ffhq-256-config-e-003810_fix_ctrl.npz" ,
198+ "StyleGAN2-Cat256_Z" : "Hessian_summary/StyleGAN2_Fix/stylegan2-cat-config-f_fix_ctrl/spectra_col_stylegan2-cat-config-f_fix_ctrl.npz" ,
199+ "StyleGAN-Face_W" : "Hessian_summary/StyleGAN_Fix/StyleGAN_Face256_W_fix_ctrl/spectra_col_StyleGAN_Face256_W_fix_ctrl.npz" ,
200+ "StyleGAN2-Face512_W" : "Hessian_summary/StyleGAN2_Fix/ffhq-512-avg-tpurun1_W_fix_ctrl/spectra_col_ffhq-512-avg-tpurun1_W_fix_ctrl.npz" ,
201+ "StyleGAN2-Face256_W" : "Hessian_summary/StyleGAN2_Fix/ffhq-256-config-e-003810_W_fix_ctrl/spectra_col_ffhq-256-config-e-003810_W_fix_ctrl.npz" ,
202+ "StyleGAN2-Cat256_W" : "Hessian_summary/StyleGAN2_Fix/stylegan2-cat-config-f_W_fix_ctrl/spectra_col_stylegan2-cat-config-f_W_fix_ctrl.npz" ,
203+ }
0 commit comments