from problems import *
from optimizers import *
from optimizers.utils import generate_mixing_matrix
from utils import run_exp

n_agent = 20
m = 1000
dim = 40

kappa = 10
mu = 5e-10

n_iters = 1000

p = LinearRegression(n_agent, m, dim, noise_variance=1, kappa=kappa, prob=0.3)
W, alpha = generate_mixing_matrix(p)
x_0 = np.random.rand(dim, n_agent)
eta = 2 / (p.L + p.sigma)

inner_iters = [1, 2, 5, 10, 50, 100]
batch_size = [1]
params = [(k, 1, 0.05) for k in inner_iters]


exps = [NetworkDANE(p, n_iters=n_iters, mu=mu, x_0=x_0, W=W)] \
    + [NetworkSVRG(p, n_iters=n_iters, n_inner_iters=x[0], batch_size=x[1], eta=eta*x[2], x_0=x_0, W=W) for x in params]

res = run_exp(exps, save=False, plot=False)

table = np.zeros((len(inner_iters), len(batch_size) * 2 + 1))
table[:, 0] = inner_iters
Beispiel #2
0
from utils import multiprocess_run, run_exp

# NetworkSVRG = NetworkSARAH

n_agent = 20
m = 1000
dim = 40

kappa = 10000
kappa = 10

n_iters = 1000000  # Run till converge

p = LinearRegression(n_agent, m, dim, noise_variance=1, kappa=kappa, prob=0.3)

W = generate_mixing_matrix(p.G)

x_0 = np.random.rand(dim, n_agent)

eta = 2 / (p.L + p.sigma)

params = [
    # n_inner_iters, eta
    (1, 0.15),
    (2, 0.20),
    (5, 0.30),
    (10, 0.15),
    (50, 0.05),
    (100, 0.05),
    (300, 0.02),
    (500, 0.01),