def main(_): FLAGS = tf.compat.v1.app.flags.FLAGS.flag_values_dict() FLAGS = preprocess_flags(FLAGS) globals().update(FLAGS) print(partial_kernel_n_proc) number_completed = 0 files = find_partial_kernel_filenames(FLAGS) for f in files: cnt = int(f.split("_")[-2]) if cnt > partial_kernel_n_proc: number_completed = cnt - partial_kernel_n_proc if f == kernel_filename(FLAGS): number_completed = partial_kernel_n_proc #break while number_completed < partial_kernel_n_proc: files = find_partial_kernel_filenames(FLAGS) print(files) if len(files) > 1: for i, f in enumerate(files): print(f) if i == 0: cov = load_kernel_by_filename(f) if number_completed == 0: number_completed += 1 else: cov += load_kernel_by_filename(f) number_completed += 1 if number_completed >= partial_kernel_n_proc: save_kernel(cov / number_completed, FLAGS) else: save_kernel_partial(cov, FLAGS, partial_kernel_n_proc + number_completed) for f in files: os.remove(f) sleep(100)
Xfull = np.concatenate([X, X_test]) ys2 = [[y] for y in ys] ysfull = ys2 + [[y] for y in test_ys] Yfull = np.array(ysfull) Y = np.array(ys2) #%% # filename = net+"_KMNIST_1000_0.0_0.0_True_False_True_4_3.0_0.0_None_0000_max_kernel.npy" filename = "newer_arch_sweep_ce_sgd__" + str( net ) + "_EMNIST_1000_0.0_0.0_True_False_True_4_1.414_0.0_None_0000_max_kernel.npy" from utils import load_kernel_by_filename Kfull = load_kernel_by_filename("kernels/" + filename) # m = 1000 # Kfull.max() # K = Kfull/Kfull.max() # K *= 1000 eigs = np.linalg.eigh(K)[0] eigs m = 1000 epsilon = 1 sigma = 1e-1 for i in range(1000): epsilon = np.sum(eigs / (1 + eigs * m / (sigma**2 + epsilon)))
ys2 = [[y] for y in ys] ysfull = ys2 + [[y] for y in test_ys] Yfull = np.array(ysfull) Y = np.array(ys2) #%% # del K,theta # filename = net+"_KMNIST_1000_0.0_0.0_True_False_True_4_3.0_0.0_None_0000_max_kernel.npy" filename = prefix+"_"+str(net)+"_EMNIST_1000_0.0_0.0_True_False_True_4_1.414_0.0_None_0000_max_kernel.npy" # filename = "newer_arch_sweep_ce_sgd__"+str(net)+"_EMNIST_1000_0.0_0.0_True_False_True_4_1.414_0.0_None_0000_max_NTK_kernel.npy" ##NNGP kernel from utils import load_kernel_by_filename try: theta = load_kernel_by_filename("kernels/"+filename) except FileNotFoundError: print("File not found :P") continue ##NTK kernel # filename = "newer_arch_sweep_ce_sgd__"+str(net)+"_EMNIST_1000_0.0_0.0_True_False_True_4_1.414_0.0_None_0000_max_NTK_kernel.npy" # from utils import load_kernel_by_filename # try: # Kfull = load_kernel_by_filename("kernels/"+filename) # except FileNotFoundError: # print("File not found :P") # continue # K = Kfull # K = 1*Kfull
from scipy.special import comb # comb(3,2) def num_per_degree(S): return comb(n,S) Ss = range(n) reduced_eigs = np.array(list(map(eig_for_degree, Ss))) num_eigs = np.array(list(map(num_per_degree, Ss))) # m=1000 from utils import load_kernel_by_filename K = load_kernel_by_filename("kernels/mnist_msweep_kernels__fc_mnist_"+str(8192)+"_0.0_0.0_True_False_True_2_1.41_0.1_None_00_max_kernel.npy") eigs = np.linalg.eigh(K)[0] n=13 2**13 ms = list(map(lambda x: 2**x, range(n))) epsilons = [] for m in ms: epsilon = 1 sigma=1e-1 for i in range(1000): epsilon = np.sum(eigs/(1+eigs*m/(sigma**2+epsilon))) # epsilon = np.sum(num_eigs*reduced_eigs/(1+reduced_eigs*m/(sigma**2+epsilon))) epsilons.append(epsilon) import matplotlib.pyplot as plt