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
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),