示例#1
0
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)
示例#2
0
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)))
示例#3
0
    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