Worst Case Errors (WCEs) with Matern Kernels on Matrix Manifolds¶
In [1]:
Copied!
import rmatqmcpy
import torch
import numpy as np
import qmcpy as qp
import agsutil
import time
import pandas as pd
import os
import matplotlib
from matplotlib import pyplot
torch.set_default_dtype(torch.float64)
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
print("torch device = %s"%DEVICE)
MPLP = agsutil.mpl_setup()
agsutil.print_data_signatures(MPLP,"MPLP",verbose_indent=0)
import rmatqmcpy
import torch
import numpy as np
import qmcpy as qp
import agsutil
import time
import pandas as pd
import os
import matplotlib
from matplotlib import pyplot
torch.set_default_dtype(torch.float64)
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
print("torch device = %s"%DEVICE)
MPLP = agsutil.mpl_setup()
agsutil.print_data_signatures(MPLP,"MPLP",verbose_indent=0)
torch device = cpu MPLP['PW'] = 30 MPLP['FS'] = 30 MPLP['COLORS'] a list of length 10 MPLP['LINESTYLES'] a list of length 10 MPLP['MARKERS'] a list of length 12
In [2]:
Copied!
manifold_type = "flag" # Stiefel, Gr, flag, LGr
field = "R" # R,C,H
n = 3
nu = 3/2 # 3/2,9/2,11/2
log2_N_ref = 27 # 26,24
log2_N_max = 11
log2_N_rho = 11
trials = 25
pcg_log2_N_threshold = 14
pcg_residtol = 1e-4
print("manifold_type = %s"%manifold_type)
print("field = %s"%field)
print("n = %d"%n)
print("nu = %.1f"%nu)
print("log2_N_ref = %d"%log2_N_ref)
print("log2_N_max = %d"%log2_N_max)
print("log2_N_rho = %d"%log2_N_rho)
print("trials = %d"%trials)
print("pcg_log2_N_threshold = %d"%pcg_log2_N_threshold)
print("pcg_residtol = %.1e"%pcg_residtol)
if manifold_type=="Stiefel":
k = 1
print("k = %d"%k)
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Stiefel_R(*args,k=k,**kwargs)
d = int(n*k-k*(k+1)/2)
r = int(n*k)
decomp_kwarg = "rand_On"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_On_QR,"eig": rmatqmcpy.rand_On_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Stiefel_C(*args,k=k,**kwargs)
d = int(2*n*k-k**2)
r = int(2*n*k)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Stiefel_H(*args,k=k,**kwargs)
d = int(4*n*k-2*k**2+k)
r = int(8*n*k)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
else: raise Exception("invalid field = %s"%field)
elif manifold_type=="Gr":
k = 5
print("k = %d"%k)
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Gr_R(*args,k=k,**kwargs)
d = int(k*(n-k))
r = int(n**2)
decomp_kwarg = "rand_On"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_On_QR,"eig": rmatqmcpy.rand_On_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Gr_C(*args,k=k,**kwargs)
d = int(2*k*(n-k))
r = int(2*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Gr_H(*args,k=k,**kwargs)
d = int(4*k*(n-k))
r = int(8*n**2)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
else: raise Exception("invalid field = %s"%field)
elif manifold_type=="flag":
delta = torch.arange(1,n+1,dtype=torch.get_default_dtype(),device=DEVICE)
delta = delta/torch.linalg.norm(delta)
m = delta.unique(return_counts=True)[1]
print("delta = %s"%str(delta))
print("m = %s"%str(m))
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_flag_R(*args,delta=delta,**kwargs)
d = int(1/2*(n**2-(m**2).sum()))
r = int(n**2)
decomp_kwarg = "rand_On"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_On_QR,"eig": rmatqmcpy.rand_On_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_flag_C(*args,delta=delta,**kwargs)
d = int((n**2-(m**2).sum()))
r = int(2*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_flag_H(*args,delta=delta,**kwargs)
d = int(2*(n**2-(m**2).sum()))
r = int(8*n**2)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
else: raise Exception("invalid field = %s"%field)
elif manifold_type=="LGr":
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_LGr_R(*args,**kwargs)
d = int(n*(n+1)/2)
r = int(2*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_LGr_C(*args,**kwargs)
d = int(n*(n+1))
r = int(8*n**2)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_LGr_H(*args,**kwargs)
d = int(n*(2*n-1))
r = int(8*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
else: raise Exception("invalid field = %s"%field)
else: raise Exception("invalid manifold_type = %s"%manifold_type)
s = nu+d/2
print("d = %d"%d)
print("r = %d"%r)
print("s = %s"%s)
print("s/d = %s"%(s/d))
fig,ax = pyplot.subplots(nrows=1,ncols=1,figsize=(MPLP["PW"]/2,MPLP["PW"]/2/1.5),sharex=True,sharey=False)
N_plot = 2**np.arange(2,13)
primary_trend = N_plot**(-s/d)*np.log(N_plot)**(s/d)
ax.plot(N_plot,primary_trend,color="k",alpha=0.5,linestyle="dashdot",label=r"$\mathcal{O}(N^{-s/d} \log(N)^{s/d})$")
ax.set_yscale("log",base=10)
ax.set_xscale("log",base=2)
xmin,xmax = [N_plot[0],N_plot[-1]]
# xmin,xmax = ax.get_xlim()
ymin,ymax = primary_trend.min(),primary_trend.max()
# ymin,ymax = ax.get_ylim()
ax.set_xlim([xmin,xmax])
ax.set_ylim([ymin,ymax])
ax.axline([xmin,ymax],[2*xmin,2**(-1/2)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-1/2})$",linestyle="dashed")
ax.axline([xmin,ymax],[2*xmin,2**(-s/d)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-s/d})$",linestyle="dotted")
ax.legend(frameon=False,ncols=4,loc="lower center",bbox_to_anchor=(.5,-.3))
ax.set_xlabel(r"$N$")
fig.tight_layout()
del N_plot,primary_trend
manifold_type = "flag" # Stiefel, Gr, flag, LGr
field = "R" # R,C,H
n = 3
nu = 3/2 # 3/2,9/2,11/2
log2_N_ref = 27 # 26,24
log2_N_max = 11
log2_N_rho = 11
trials = 25
pcg_log2_N_threshold = 14
pcg_residtol = 1e-4
print("manifold_type = %s"%manifold_type)
print("field = %s"%field)
print("n = %d"%n)
print("nu = %.1f"%nu)
print("log2_N_ref = %d"%log2_N_ref)
print("log2_N_max = %d"%log2_N_max)
print("log2_N_rho = %d"%log2_N_rho)
print("trials = %d"%trials)
print("pcg_log2_N_threshold = %d"%pcg_log2_N_threshold)
print("pcg_residtol = %.1e"%pcg_residtol)
if manifold_type=="Stiefel":
k = 1
print("k = %d"%k)
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Stiefel_R(*args,k=k,**kwargs)
d = int(n*k-k*(k+1)/2)
r = int(n*k)
decomp_kwarg = "rand_On"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_On_QR,"eig": rmatqmcpy.rand_On_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Stiefel_C(*args,k=k,**kwargs)
d = int(2*n*k-k**2)
r = int(2*n*k)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Stiefel_H(*args,k=k,**kwargs)
d = int(4*n*k-2*k**2+k)
r = int(8*n*k)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
else: raise Exception("invalid field = %s"%field)
elif manifold_type=="Gr":
k = 5
print("k = %d"%k)
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Gr_R(*args,k=k,**kwargs)
d = int(k*(n-k))
r = int(n**2)
decomp_kwarg = "rand_On"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_On_QR,"eig": rmatqmcpy.rand_On_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Gr_C(*args,k=k,**kwargs)
d = int(2*k*(n-k))
r = int(2*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_Gr_H(*args,k=k,**kwargs)
d = int(4*k*(n-k))
r = int(8*n**2)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
else: raise Exception("invalid field = %s"%field)
elif manifold_type=="flag":
delta = torch.arange(1,n+1,dtype=torch.get_default_dtype(),device=DEVICE)
delta = delta/torch.linalg.norm(delta)
m = delta.unique(return_counts=True)[1]
print("delta = %s"%str(delta))
print("m = %s"%str(m))
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_flag_R(*args,delta=delta,**kwargs)
d = int(1/2*(n**2-(m**2).sum()))
r = int(n**2)
decomp_kwarg = "rand_On"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_On_QR,"eig": rmatqmcpy.rand_On_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_flag_C(*args,delta=delta,**kwargs)
d = int((n**2-(m**2).sum()))
r = int(2*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_flag_H(*args,delta=delta,**kwargs)
d = int(2*(n**2-(m**2).sum()))
r = int(8*n**2)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
else: raise Exception("invalid field = %s"%field)
elif manifold_type=="LGr":
if field=="R":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_LGr_R(*args,**kwargs)
d = int(n*(n+1)/2)
r = int(2*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
elif field=="C":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_LGr_C(*args,**kwargs)
d = int(n*(n+1))
r = int(8*n**2)
decomp_kwarg = "rand_Spn"
decomp_map = {"default": None, "SVD": rmatqmcpy.rand_Spn_SVD}
elif field=="H":
rand_manifold = lambda *args,**kwargs: rmatqmcpy.rand_LGr_H(*args,**kwargs)
d = int(n*(2*n-1))
r = int(8*n**2)
decomp_kwarg = "rand_Un"
decomp_map = {"default": None, "QR": rmatqmcpy.rand_Un_QR,"eig": rmatqmcpy.rand_Un_eig}
else: raise Exception("invalid field = %s"%field)
else: raise Exception("invalid manifold_type = %s"%manifold_type)
s = nu+d/2
print("d = %d"%d)
print("r = %d"%r)
print("s = %s"%s)
print("s/d = %s"%(s/d))
fig,ax = pyplot.subplots(nrows=1,ncols=1,figsize=(MPLP["PW"]/2,MPLP["PW"]/2/1.5),sharex=True,sharey=False)
N_plot = 2**np.arange(2,13)
primary_trend = N_plot**(-s/d)*np.log(N_plot)**(s/d)
ax.plot(N_plot,primary_trend,color="k",alpha=0.5,linestyle="dashdot",label=r"$\mathcal{O}(N^{-s/d} \log(N)^{s/d})$")
ax.set_yscale("log",base=10)
ax.set_xscale("log",base=2)
xmin,xmax = [N_plot[0],N_plot[-1]]
# xmin,xmax = ax.get_xlim()
ymin,ymax = primary_trend.min(),primary_trend.max()
# ymin,ymax = ax.get_ylim()
ax.set_xlim([xmin,xmax])
ax.set_ylim([ymin,ymax])
ax.axline([xmin,ymax],[2*xmin,2**(-1/2)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-1/2})$",linestyle="dashed")
ax.axline([xmin,ymax],[2*xmin,2**(-s/d)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-s/d})$",linestyle="dotted")
ax.legend(frameon=False,ncols=4,loc="lower center",bbox_to_anchor=(.5,-.3))
ax.set_xlabel(r"$N$")
fig.tight_layout()
del N_plot,primary_trend
manifold_type = flag field = R n = 3 nu = 1.5 log2_N_ref = 27 log2_N_max = 11 log2_N_rho = 11 trials = 25 pcg_log2_N_threshold = 14 pcg_residtol = 1.0e-04 delta = tensor([0.2673, 0.5345, 0.8018]) m = tensor([1, 1, 1]) d = 3 r = 9 s = 3.0 s/d = 1.0
In [3]:
Copied!
x_ref = rand_manifold(N=2**0,n=n,seed=107,qp_unif_gen=qp.Net)
y_ref = rand_manifold(N=2**log2_N_ref,n=n,seed=101,qp_unif_gen=qp.Net)
N_rho = 2**log2_N_rho
fnorms = torch.linalg.norm(y_ref[:N_rho,None,:,:]-y_ref[None,:N_rho,:,:],dim=(-2,-1)).real
rho = fnorms[*torch.tril_indices(N_rho,N_rho,-1)].median().item()
print("rho = %.2e"%rho)
kernel = rmatqmcpy.KernelMatern(nu=nu,rho=rho)
kmean = kernel(x_ref[:,None,:,:],y_ref[None,:,:,:]).mean().item()
print("kmean = %.20f"%kmean)
del x_ref,y_ref,N_rho,fnorms
x_ref = rand_manifold(N=2**0,n=n,seed=107,qp_unif_gen=qp.Net)
y_ref = rand_manifold(N=2**log2_N_ref,n=n,seed=101,qp_unif_gen=qp.Net)
N_rho = 2**log2_N_rho
fnorms = torch.linalg.norm(y_ref[:N_rho,None,:,:]-y_ref[None,:N_rho,:,:],dim=(-2,-1)).real
rho = fnorms[*torch.tril_indices(N_rho,N_rho,-1)].median().item()
print("rho = %.2e"%rho)
kernel = rmatqmcpy.KernelMatern(nu=nu,rho=rho)
kmean = kernel(x_ref[:,None,:,:],y_ref[None,:,:,:]).mean().item()
print("kmean = %.20f"%kmean)
del x_ref,y_ref,N_rho,fnorms
rho = 5.35e-01 kmean = 0.50944295052349031216
In [4]:
Copied!
genf_ld_optw_decomp = [
[r"IID $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", False, False, "default"],
[r"IID $\mathcal{X}$ ~ Opt $\boldsymbol{w}$", False, True, "default"],
[r"QR LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", True, False, "QR"],
[r"Eig LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", True, False, "eig"],
# [r"SVD LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", True, False, "SVD"],
]
N = 2**torch.arange(2,log2_N_max+1)
seeds = [i for i in range(trials)]
wces = torch.nan*torch.empty((len(genf_ld_optw_decomp),len(N),trials))
t0 = time.perf_counter()
for i,(key,ld,optw,decomp) in enumerate(genf_ld_optw_decomp):
print(key)
qp_unif_gen = qp.Net if ld else qp.IIDStdUniform
rand_decomp = decomp_map[decomp]
kwargs_rand_manifold = {"qp_unif_gen":qp_unif_gen,decomp_kwarg:rand_decomp}
for j in range(len(N)):
print(" N = %d"%N[j])
t0_ij = time.perf_counter()
for t in range(trials):
x = rand_manifold(N=N[j],n=n,device=DEVICE,seed=seeds[t],**kwargs_rand_manifold)
if optw:
w,wce2_p_kmean = rmatqmcpy.opt_weights_sum_1(x,kernel,use_pcg=2**pcg_log2_N_threshold,pcg_kwargs={"verbose":False,"residtol":pcg_residtol})
else:
w = torch.ones(N[j],device=DEVICE)/N[j]
kmat = kernel(x[:,None,:,:],x[None,:,:,:])
wce2_p_kmean = torch.einsum("...i,...ij,...j->...",w,kmat,w) # (...,)
wces[i,j,t] = np.sqrt(max(0,float(wce2_p_kmean.cpu()-kmean)))
print(" trial %-10d time %-10.1f wce %-10.1e"%(t,time.perf_counter()-t0,wces[i,j,t]))
if (time.perf_counter()-t0_ij)/trials>2:
break
genf_ld_optw_decomp = [
[r"IID $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", False, False, "default"],
[r"IID $\mathcal{X}$ ~ Opt $\boldsymbol{w}$", False, True, "default"],
[r"QR LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", True, False, "QR"],
[r"Eig LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", True, False, "eig"],
# [r"SVD LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$", True, False, "SVD"],
]
N = 2**torch.arange(2,log2_N_max+1)
seeds = [i for i in range(trials)]
wces = torch.nan*torch.empty((len(genf_ld_optw_decomp),len(N),trials))
t0 = time.perf_counter()
for i,(key,ld,optw,decomp) in enumerate(genf_ld_optw_decomp):
print(key)
qp_unif_gen = qp.Net if ld else qp.IIDStdUniform
rand_decomp = decomp_map[decomp]
kwargs_rand_manifold = {"qp_unif_gen":qp_unif_gen,decomp_kwarg:rand_decomp}
for j in range(len(N)):
print(" N = %d"%N[j])
t0_ij = time.perf_counter()
for t in range(trials):
x = rand_manifold(N=N[j],n=n,device=DEVICE,seed=seeds[t],**kwargs_rand_manifold)
if optw:
w,wce2_p_kmean = rmatqmcpy.opt_weights_sum_1(x,kernel,use_pcg=2**pcg_log2_N_threshold,pcg_kwargs={"verbose":False,"residtol":pcg_residtol})
else:
w = torch.ones(N[j],device=DEVICE)/N[j]
kmat = kernel(x[:,None,:,:],x[None,:,:,:])
wce2_p_kmean = torch.einsum("...i,...ij,...j->...",w,kmat,w) # (...,)
wces[i,j,t] = np.sqrt(max(0,float(wce2_p_kmean.cpu()-kmean)))
print(" trial %-10d time %-10.1f wce %-10.1e"%(t,time.perf_counter()-t0,wces[i,j,t]))
if (time.perf_counter()-t0_ij)/trials>2:
break
IID $\mathcal{X}$ ~ Equal $\boldsymbol{w}$
N = 4
trial 0 time 0.0 wce 3.6e-01
trial 1 time 0.0 wce 4.2e-01
trial 2 time 0.0 wce 3.4e-01
trial 3 time 0.0 wce 4.4e-01
trial 4 time 0.0 wce 3.6e-01
trial 5 time 0.0 wce 3.4e-01
trial 6 time 0.0 wce 2.7e-01
trial 7 time 0.0 wce 3.5e-01
trial 8 time 0.0 wce 3.7e-01
trial 9 time 0.0 wce 4.1e-01
trial 10 time 0.0 wce 3.4e-01
trial 11 time 0.0 wce 3.7e-01
trial 12 time 0.0 wce 3.5e-01
trial 13 time 0.0 wce 3.6e-01
trial 14 time 0.0 wce 2.5e-01
trial 15 time 0.0 wce 3.5e-01
trial 16 time 0.0 wce 3.2e-01
trial 17 time 0.0 wce 3.6e-01
trial 18 time 0.0 wce 3.7e-01
trial 19 time 0.0 wce 3.4e-01
trial 20 time 0.0 wce 4.1e-01
trial 21 time 0.0 wce 3.5e-01
trial 22 time 0.0 wce 4.1e-01
trial 23 time 0.0 wce 4.4e-01
trial 24 time 0.0 wce 3.6e-01
N = 8
trial 0 time 0.0 wce 3.5e-01
trial 1 time 0.0 wce 2.0e-01
trial 2 time 0.0 wce 2.8e-01
trial 3 time 0.0 wce 2.9e-01
trial 4 time 0.0 wce 2.0e-01
trial 5 time 0.0 wce 2.9e-01
trial 6 time 0.0 wce 2.4e-01
trial 7 time 0.0 wce 2.4e-01
trial 8 time 0.0 wce 2.3e-01
trial 9 time 0.0 wce 3.0e-01
trial 10 time 0.0 wce 2.3e-01
trial 11 time 0.0 wce 2.7e-01
trial 12 time 0.0 wce 2.2e-01
trial 13 time 0.0 wce 2.5e-01
trial 14 time 0.0 wce 2.5e-01
trial 15 time 0.0 wce 2.0e-01
trial 16 time 0.0 wce 2.8e-01
trial 17 time 0.0 wce 2.8e-01
trial 18 time 0.0 wce 3.1e-01
trial 19 time 0.0 wce 3.2e-01
trial 20 time 0.0 wce 3.1e-01
trial 21 time 0.0 wce 3.2e-01
trial 22 time 0.0 wce 2.4e-01
trial 23 time 0.0 wce 2.5e-01
trial 24 time 0.0 wce 2.0e-01
N = 16
trial 0 time 0.0 wce 2.2e-01
trial 1 time 0.0 wce 1.6e-01
trial 2 time 0.0 wce 1.8e-01
trial 3 time 0.0 wce 1.3e-01
trial 4 time 0.0 wce 1.2e-01
trial 5 time 0.0 wce 2.3e-01
trial 6 time 0.0 wce 1.3e-01
trial 7 time 0.0 wce 1.7e-01
trial 8 time 0.0 wce 2.2e-01
trial 9 time 0.0 wce 1.8e-01
trial 10 time 0.0 wce 1.4e-01
trial 11 time 0.0 wce 1.1e-01
trial 12 time 0.0 wce 1.2e-01
trial 13 time 0.0 wce 1.8e-01
trial 14 time 0.0 wce 1.4e-01
trial 15 time 0.0 wce 1.3e-01
trial 16 time 0.0 wce 2.6e-01
trial 17 time 0.0 wce 2.0e-01
trial 18 time 0.0 wce 2.2e-01
trial 19 time 0.0 wce 1.5e-01
trial 20 time 0.0 wce 2.6e-01
trial 21 time 0.0 wce 2.2e-01
trial 22 time 0.0 wce 1.7e-01
trial 23 time 0.0 wce 1.8e-01
trial 24 time 0.0 wce 1.0e-01
N = 32
trial 0 time 0.1 wce 1.3e-01
trial 1 time 0.1 wce 9.9e-02
trial 2 time 0.1 wce 1.3e-01
trial 3 time 0.1 wce 9.5e-02
trial 4 time 0.1 wce 1.2e-01
trial 5 time 0.1 wce 1.7e-01
trial 6 time 0.1 wce 8.3e-02
trial 7 time 0.1 wce 1.1e-01
trial 8 time 0.1 wce 1.7e-01
trial 9 time 0.1 wce 1.2e-01
trial 10 time 0.1 wce 1.0e-01
trial 11 time 0.1 wce 9.7e-02
trial 12 time 0.1 wce 9.9e-02
trial 13 time 0.1 wce 9.1e-02
trial 14 time 0.1 wce 1.5e-01
trial 15 time 0.1 wce 1.2e-01
trial 16 time 0.1 wce 1.5e-01
trial 17 time 0.1 wce 1.6e-01
trial 18 time 0.1 wce 1.2e-01
trial 19 time 0.1 wce 1.0e-01
trial 20 time 0.1 wce 1.5e-01
trial 21 time 0.1 wce 1.4e-01
trial 22 time 0.1 wce 1.1e-01
trial 23 time 0.1 wce 1.6e-01
trial 24 time 0.1 wce 1.1e-01
N = 64
trial 0 time 0.1 wce 8.0e-02
trial 1 time 0.1 wce 6.7e-02
trial 2 time 0.1 wce 7.9e-02
trial 3 time 0.1 wce 6.4e-02
trial 4 time 0.1 wce 6.3e-02
trial 5 time 0.1 wce 9.7e-02
trial 6 time 0.1 wce 7.8e-02
trial 7 time 0.1 wce 8.9e-02
trial 8 time 0.1 wce 9.6e-02
trial 9 time 0.1 wce 7.8e-02
trial 10 time 0.1 wce 6.7e-02
trial 11 time 0.1 wce 7.9e-02
trial 12 time 0.1 wce 1.1e-01
trial 13 time 0.1 wce 8.9e-02
trial 14 time 0.1 wce 9.7e-02
trial 15 time 0.1 wce 1.2e-01
trial 16 time 0.1 wce 7.5e-02
trial 17 time 0.1 wce 8.5e-02
trial 18 time 0.1 wce 8.3e-02
trial 19 time 0.1 wce 8.8e-02
trial 20 time 0.1 wce 8.0e-02
trial 21 time 0.1 wce 9.3e-02
trial 22 time 0.1 wce 6.8e-02
trial 23 time 0.1 wce 9.5e-02
trial 24 time 0.1 wce 6.4e-02
N = 128
trial 0 time 0.1 wce 5.9e-02
trial 1 time 0.1 wce 4.5e-02
trial 2 time 0.1 wce 5.5e-02
trial 3 time 0.1 wce 5.4e-02
trial 4 time 0.1 wce 7.2e-02
trial 5 time 0.1 wce 7.9e-02
trial 6 time 0.1 wce 5.3e-02
trial 7 time 0.1 wce 5.0e-02
trial 8 time 0.1 wce 6.9e-02
trial 9 time 0.1 wce 5.0e-02
trial 10 time 0.1 wce 5.6e-02
trial 11 time 0.1 wce 5.4e-02
trial 12 time 0.1 wce 7.8e-02
trial 13 time 0.1 wce 6.0e-02
trial 14 time 0.1 wce 4.5e-02
trial 15 time 0.1 wce 7.9e-02
trial 16 time 0.1 wce 6.1e-02
trial 17 time 0.1 wce 5.4e-02
trial 18 time 0.1 wce 6.4e-02
trial 19 time 0.1 wce 5.3e-02
trial 20 time 0.1 wce 8.4e-02
trial 21 time 0.1 wce 6.4e-02
trial 22 time 0.1 wce 6.5e-02
trial 23 time 0.1 wce 5.2e-02
trial 24 time 0.1 wce 5.5e-02
N = 256
trial 0 time 0.1 wce 3.8e-02
trial 1 time 0.1 wce 3.9e-02
trial 2 time 0.1 wce 3.8e-02
trial 3 time 0.1 wce 4.0e-02
trial 4 time 0.1 wce 4.1e-02
trial 5 time 0.1 wce 4.5e-02
trial 6 time 0.1 wce 2.7e-02
trial 7 time 0.1 wce 3.6e-02
trial 8 time 0.1 wce 3.6e-02
trial 9 time 0.1 wce 4.9e-02
trial 10 time 0.1 wce 3.9e-02
trial 11 time 0.1 wce 3.2e-02
trial 12 time 0.1 wce 3.5e-02
trial 13 time 0.1 wce 4.1e-02
trial 14 time 0.1 wce 3.8e-02
trial 15 time 0.1 wce 4.9e-02
trial 16 time 0.1 wce 3.8e-02
trial 17 time 0.1 wce 4.5e-02
trial 18 time 0.1 wce 4.1e-02
trial 19 time 0.1 wce 4.1e-02
trial 20 time 0.1 wce 4.8e-02
trial 21 time 0.1 wce 3.7e-02
trial 22 time 0.1 wce 5.0e-02
trial 23 time 0.1 wce 3.6e-02
trial 24 time 0.1 wce 3.0e-02
N = 512
trial 0 time 0.1 wce 2.7e-02
trial 1 time 0.1 wce 3.5e-02
trial 2 time 0.1 wce 2.7e-02
trial 3 time 0.1 wce 2.6e-02
trial 4 time 0.1 wce 2.5e-02
trial 5 time 0.1 wce 4.3e-02
trial 6 time 0.1 wce 2.1e-02
trial 7 time 0.1 wce 3.0e-02
trial 8 time 0.1 wce 3.0e-02
trial 9 time 0.1 wce 2.9e-02
trial 10 time 0.1 wce 3.5e-02
trial 11 time 0.1 wce 2.1e-02
trial 12 time 0.2 wce 2.6e-02
trial 13 time 0.2 wce 3.3e-02
trial 14 time 0.2 wce 2.4e-02
trial 15 time 0.2 wce 2.5e-02
trial 16 time 0.2 wce 3.2e-02
trial 17 time 0.2 wce 3.4e-02
trial 18 time 0.2 wce 2.7e-02
trial 19 time 0.2 wce 2.9e-02
trial 20 time 0.2 wce 3.3e-02
trial 21 time 0.2 wce 2.9e-02
trial 22 time 0.2 wce 2.5e-02
trial 23 time 0.2 wce 3.2e-02
trial 24 time 0.2 wce 2.4e-02
N = 1024
trial 0 time 0.2 wce 1.8e-02
trial 1 time 0.2 wce 1.8e-02
trial 2 time 0.2 wce 1.6e-02
trial 3 time 0.2 wce 1.9e-02
trial 4 time 0.2 wce 1.5e-02
trial 5 time 0.3 wce 2.2e-02
trial 6 time 0.3 wce 1.7e-02
trial 7 time 0.3 wce 2.0e-02
trial 8 time 0.3 wce 2.4e-02
trial 9 time 0.3 wce 1.7e-02
trial 10 time 0.3 wce 2.0e-02
trial 11 time 0.3 wce 2.1e-02
trial 12 time 0.3 wce 2.0e-02
trial 13 time 0.4 wce 1.8e-02
trial 14 time 0.4 wce 2.0e-02
trial 15 time 0.4 wce 1.8e-02
trial 16 time 0.4 wce 2.5e-02
trial 17 time 0.4 wce 2.2e-02
trial 18 time 0.4 wce 2.1e-02
trial 19 time 0.4 wce 1.7e-02
trial 20 time 0.4 wce 1.6e-02
trial 21 time 0.5 wce 2.3e-02
trial 22 time 0.5 wce 1.5e-02
trial 23 time 0.5 wce 2.4e-02
trial 24 time 0.5 wce 1.6e-02
N = 2048
trial 0 time 0.5 wce 1.4e-02
trial 1 time 0.6 wce 1.6e-02
trial 2 time 0.6 wce 1.6e-02
trial 3 time 0.7 wce 1.6e-02
trial 4 time 0.7 wce 1.3e-02
trial 5 time 0.8 wce 1.5e-02
trial 6 time 0.8 wce 1.6e-02
trial 7 time 0.9 wce 1.4e-02
trial 8 time 0.9 wce 1.6e-02
trial 9 time 0.9 wce 1.6e-02
trial 10 time 1.0 wce 1.5e-02
trial 11 time 1.0 wce 1.5e-02
trial 12 time 1.1 wce 1.2e-02
trial 13 time 1.1 wce 1.3e-02
trial 14 time 1.2 wce 1.5e-02
trial 15 time 1.2 wce 1.4e-02
trial 16 time 1.3 wce 1.4e-02
trial 17 time 1.3 wce 1.3e-02
trial 18 time 1.3 wce 1.7e-02
trial 19 time 1.4 wce 1.1e-02
trial 20 time 1.4 wce 1.2e-02
trial 21 time 1.5 wce 1.6e-02
trial 22 time 1.5 wce 1.2e-02
trial 23 time 1.6 wce 2.2e-02
trial 24 time 1.6 wce 1.7e-02
IID $\mathcal{X}$ ~ Opt $\boldsymbol{w}$
N = 4
trial 0 time 1.6 wce 3.2e-01
trial 1 time 1.6 wce 4.1e-01
trial 2 time 1.6 wce 3.3e-01
trial 3 time 1.6 wce 4.2e-01
trial 4 time 1.6 wce 3.2e-01
trial 5 time 1.6 wce 3.0e-01
trial 6 time 1.6 wce 2.6e-01
trial 7 time 1.6 wce 3.4e-01
trial 8 time 1.6 wce 3.4e-01
trial 9 time 1.6 wce 4.0e-01
trial 10 time 1.6 wce 3.1e-01
trial 11 time 1.6 wce 3.4e-01
trial 12 time 1.6 wce 3.4e-01
trial 13 time 1.6 wce 3.4e-01
trial 14 time 1.6 wce 2.5e-01
trial 15 time 1.6 wce 3.3e-01
trial 16 time 1.6 wce 3.0e-01
trial 17 time 1.6 wce 3.4e-01
trial 18 time 1.6 wce 3.7e-01
trial 19 time 1.6 wce 3.1e-01
trial 20 time 1.6 wce 3.8e-01
trial 21 time 1.6 wce 3.3e-01
trial 22 time 1.6 wce 3.5e-01
trial 23 time 1.6 wce 4.3e-01
trial 24 time 1.6 wce 3.3e-01
N = 8
trial 0 time 1.6 wce 2.8e-01
trial 1 time 1.6 wce 1.7e-01
trial 2 time 1.6 wce 2.5e-01
trial 3 time 1.6 wce 2.5e-01
trial 4 time 1.6 wce 1.8e-01
trial 5 time 1.6 wce 2.3e-01
trial 6 time 1.6 wce 1.9e-01
trial 7 time 1.6 wce 1.9e-01
trial 8 time 1.6 wce 2.0e-01
trial 9 time 1.6 wce 2.5e-01
trial 10 time 1.6 wce 2.0e-01
trial 11 time 1.6 wce 1.9e-01
trial 12 time 1.6 wce 2.0e-01
trial 13 time 1.6 wce 2.2e-01
trial 14 time 1.6 wce 2.0e-01
trial 15 time 1.6 wce 1.8e-01
trial 16 time 1.6 wce 2.5e-01
trial 17 time 1.6 wce 2.2e-01
trial 18 time 1.6 wce 2.7e-01
trial 19 time 1.6 wce 2.5e-01
trial 20 time 1.6 wce 2.7e-01
trial 21 time 1.6 wce 2.5e-01
trial 22 time 1.6 wce 2.3e-01
trial 23 time 1.6 wce 2.0e-01
trial 24 time 1.6 wce 1.9e-01
N = 16
trial 0 time 1.6 wce 1.3e-01
trial 1 time 1.6 wce 1.0e-01
trial 2 time 1.6 wce 1.2e-01
trial 3 time 1.6 wce 1.0e-01
trial 4 time 1.6 wce 9.0e-02
trial 5 time 1.6 wce 1.5e-01
trial 6 time 1.6 wce 1.0e-01
trial 7 time 1.6 wce 1.3e-01
trial 8 time 1.6 wce 1.2e-01
trial 9 time 1.6 wce 1.2e-01
trial 10 time 1.6 wce 1.1e-01
trial 11 time 1.6 wce 8.9e-02
trial 12 time 1.6 wce 9.5e-02
trial 13 time 1.6 wce 1.3e-01
trial 14 time 1.6 wce 1.0e-01
trial 15 time 1.6 wce 1.1e-01
trial 16 time 1.6 wce 1.4e-01
trial 17 time 1.6 wce 1.4e-01
trial 18 time 1.6 wce 1.6e-01
trial 19 time 1.6 wce 1.2e-01
trial 20 time 1.6 wce 1.7e-01
trial 21 time 1.6 wce 1.4e-01
trial 22 time 1.7 wce 1.3e-01
trial 23 time 1.7 wce 1.1e-01
trial 24 time 1.7 wce 9.4e-02
N = 32
trial 0 time 1.7 wce 8.0e-02
trial 1 time 1.7 wce 6.5e-02
trial 2 time 1.7 wce 6.9e-02
trial 3 time 1.7 wce 7.3e-02
trial 4 time 1.7 wce 6.2e-02
trial 5 time 1.7 wce 9.4e-02
trial 6 time 1.7 wce 6.0e-02
trial 7 time 1.7 wce 7.8e-02
trial 8 time 1.7 wce 8.5e-02
trial 9 time 1.7 wce 7.7e-02
trial 10 time 1.7 wce 6.8e-02
trial 11 time 1.7 wce 6.5e-02
trial 12 time 1.7 wce 6.5e-02
trial 13 time 1.7 wce 6.2e-02
trial 14 time 1.7 wce 6.9e-02
trial 15 time 1.7 wce 7.2e-02
trial 16 time 1.7 wce 6.9e-02
trial 17 time 1.7 wce 9.2e-02
trial 18 time 1.7 wce 6.9e-02
trial 19 time 1.7 wce 6.3e-02
trial 20 time 1.7 wce 6.6e-02
trial 21 time 1.7 wce 7.3e-02
trial 22 time 1.7 wce 7.0e-02
trial 23 time 1.7 wce 7.4e-02
trial 24 time 1.7 wce 5.9e-02
N = 64
trial 0 time 1.7 wce 3.9e-02
trial 1 time 1.7 wce 3.8e-02
trial 2 time 1.7 wce 3.7e-02
trial 3 time 1.7 wce 3.4e-02
trial 4 time 1.7 wce 3.6e-02
trial 5 time 1.7 wce 3.6e-02
trial 6 time 1.7 wce 3.8e-02
trial 7 time 1.7 wce 3.7e-02
trial 8 time 1.7 wce 4.1e-02
trial 9 time 1.7 wce 3.7e-02
trial 10 time 1.7 wce 3.7e-02
trial 11 time 1.7 wce 4.2e-02
trial 12 time 1.7 wce 3.9e-02
trial 13 time 1.7 wce 4.1e-02
trial 14 time 1.7 wce 4.4e-02
trial 15 time 1.7 wce 4.6e-02
trial 16 time 1.7 wce 3.8e-02
trial 17 time 1.7 wce 3.6e-02
trial 18 time 1.7 wce 4.1e-02
trial 19 time 1.7 wce 4.0e-02
trial 20 time 1.7 wce 3.3e-02
trial 21 time 1.7 wce 3.9e-02
trial 22 time 1.7 wce 3.7e-02
trial 23 time 1.7 wce 3.8e-02
trial 24 time 1.7 wce 3.8e-02
N = 128
trial 0 time 1.7 wce 2.0e-02
trial 1 time 1.7 wce 2.1e-02
trial 2 time 1.7 wce 2.1e-02
trial 3 time 1.7 wce 1.8e-02
trial 4 time 1.7 wce 2.2e-02
trial 5 time 1.7 wce 2.3e-02
trial 6 time 1.7 wce 2.1e-02
trial 7 time 1.7 wce 1.9e-02
trial 8 time 1.7 wce 2.2e-02
trial 9 time 1.7 wce 1.7e-02
trial 10 time 1.7 wce 2.3e-02
trial 11 time 1.7 wce 2.0e-02
trial 12 time 1.7 wce 1.9e-02
trial 13 time 1.7 wce 2.0e-02
trial 14 time 1.7 wce 2.0e-02
trial 15 time 1.7 wce 2.0e-02
trial 16 time 1.7 wce 2.0e-02
trial 17 time 1.7 wce 2.1e-02
trial 18 time 1.7 wce 2.0e-02
trial 19 time 1.7 wce 1.8e-02
trial 20 time 1.7 wce 2.1e-02
trial 21 time 1.7 wce 2.0e-02
trial 22 time 1.7 wce 2.1e-02
trial 23 time 1.7 wce 1.9e-02
trial 24 time 1.7 wce 2.0e-02
N = 256
trial 0 time 1.7 wce 1.1e-02
trial 1 time 1.7 wce 1.2e-02
trial 2 time 1.7 wce 1.0e-02
trial 3 time 1.7 wce 9.7e-03
trial 4 time 1.7 wce 1.1e-02
trial 5 time 1.7 wce 1.1e-02
trial 6 time 1.7 wce 1.0e-02
trial 7 time 1.7 wce 1.1e-02
trial 8 time 1.7 wce 1.0e-02
trial 9 time 1.7 wce 1.1e-02
trial 10 time 1.7 wce 1.1e-02
trial 11 time 1.7 wce 1.1e-02
trial 12 time 1.7 wce 1.0e-02
trial 13 time 1.7 wce 1.1e-02
trial 14 time 1.7 wce 1.0e-02
trial 15 time 1.7 wce 1.0e-02
trial 16 time 1.7 wce 1.1e-02
trial 17 time 1.7 wce 1.0e-02
trial 18 time 1.7 wce 1.0e-02
trial 19 time 1.7 wce 1.1e-02
trial 20 time 1.7 wce 1.1e-02
trial 21 time 1.7 wce 9.5e-03
trial 22 time 1.7 wce 1.1e-02
trial 23 time 1.7 wce 1.0e-02
trial 24 time 1.7 wce 1.1e-02
N = 512
trial 0 time 1.7 wce 5.5e-03
trial 1 time 1.7 wce 5.8e-03
trial 2 time 1.7 wce 5.1e-03
trial 3 time 1.7 wce 4.9e-03
trial 4 time 1.8 wce 5.2e-03
trial 5 time 1.8 wce 5.6e-03
trial 6 time 1.8 wce 5.6e-03
trial 7 time 1.8 wce 5.4e-03
trial 8 time 1.8 wce 5.8e-03
trial 9 time 1.8 wce 5.3e-03
trial 10 time 1.8 wce 5.6e-03
trial 11 time 1.8 wce 5.1e-03
trial 12 time 1.8 wce 5.1e-03
trial 13 time 1.8 wce 5.9e-03
trial 14 time 1.8 wce 5.4e-03
trial 15 time 1.8 wce 5.3e-03
trial 16 time 1.8 wce 5.5e-03
trial 17 time 1.8 wce 5.3e-03
trial 18 time 1.8 wce 5.5e-03
trial 19 time 1.8 wce 6.0e-03
trial 20 time 1.8 wce 5.7e-03
trial 21 time 1.8 wce 5.4e-03
trial 22 time 1.8 wce 5.2e-03
trial 23 time 1.8 wce 5.2e-03
trial 24 time 1.8 wce 5.7e-03
N = 1024
trial 0 time 1.9 wce 2.7e-03
trial 1 time 1.9 wce 2.7e-03
trial 2 time 1.9 wce 2.6e-03
trial 3 time 1.9 wce 2.6e-03
trial 4 time 1.9 wce 2.6e-03
trial 5 time 2.0 wce 2.7e-03
trial 6 time 2.0 wce 2.8e-03
trial 7 time 2.0 wce 2.8e-03
trial 8 time 2.0 wce 2.8e-03
trial 9 time 2.0 wce 2.6e-03
trial 10 time 2.0 wce 2.7e-03
trial 11 time 2.1 wce 2.7e-03
trial 12 time 2.1 wce 2.8e-03
trial 13 time 2.1 wce 2.8e-03
trial 14 time 2.1 wce 2.8e-03
trial 15 time 2.1 wce 2.8e-03
trial 16 time 2.2 wce 2.6e-03
trial 17 time 2.2 wce 2.8e-03
trial 18 time 2.2 wce 2.8e-03
trial 19 time 2.2 wce 2.9e-03
trial 20 time 2.2 wce 2.8e-03
trial 21 time 2.2 wce 2.7e-03
trial 22 time 2.3 wce 2.7e-03
trial 23 time 2.3 wce 2.8e-03
trial 24 time 2.3 wce 2.8e-03
N = 2048
trial 0 time 2.4 wce 1.3e-03
trial 1 time 2.5 wce 1.4e-03
trial 2 time 2.6 wce 1.3e-03
trial 3 time 2.7 wce 1.3e-03
trial 4 time 2.8 wce 1.3e-03
trial 5 time 2.9 wce 1.4e-03
trial 6 time 2.9 wce 1.4e-03
trial 7 time 3.0 wce 1.4e-03
trial 8 time 3.1 wce 1.3e-03
trial 9 time 3.2 wce 1.3e-03
trial 10 time 3.3 wce 1.3e-03
trial 11 time 3.4 wce 1.4e-03
trial 12 time 3.5 wce 1.4e-03
trial 13 time 3.6 wce 1.3e-03
trial 14 time 3.7 wce 1.3e-03
trial 15 time 3.8 wce 1.4e-03
trial 16 time 3.9 wce 1.4e-03
trial 17 time 4.0 wce 1.4e-03
trial 18 time 4.1 wce 1.4e-03
trial 19 time 4.2 wce 1.3e-03
trial 20 time 4.3 wce 1.4e-03
trial 21 time 4.4 wce 1.3e-03
trial 22 time 4.5 wce 1.4e-03
trial 23 time 4.6 wce 1.4e-03
trial 24 time 4.7 wce 1.3e-03
QR LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$
N = 4
trial 0 time 4.7 wce 3.0e-01
trial 1 time 4.7 wce 2.9e-01
trial 2 time 4.7 wce 4.0e-01
trial 3 time 4.8 wce 3.8e-01
trial 4 time 4.8 wce 3.6e-01
trial 5 time 4.8 wce 3.9e-01
trial 6 time 4.8 wce 3.6e-01
trial 7 time 4.8 wce 3.2e-01
trial 8 time 4.8 wce 3.7e-01
trial 9 time 4.8 wce 3.0e-01
trial 10 time 4.8 wce 3.7e-01
trial 11 time 4.8 wce 3.7e-01
trial 12 time 4.8 wce 2.7e-01
trial 13 time 4.8 wce 3.7e-01
trial 14 time 4.8 wce 3.7e-01
trial 15 time 4.8 wce 3.5e-01
trial 16 time 4.8 wce 3.3e-01
trial 17 time 4.8 wce 3.6e-01
trial 18 time 4.8 wce 2.9e-01
trial 19 time 4.8 wce 4.8e-01
trial 20 time 4.8 wce 4.0e-01
trial 21 time 4.8 wce 3.7e-01
trial 22 time 4.8 wce 3.0e-01
trial 23 time 4.8 wce 2.9e-01
trial 24 time 4.8 wce 3.4e-01
N = 8
trial 0 time 4.8 wce 1.6e-01
trial 1 time 4.8 wce 1.9e-01
trial 2 time 4.8 wce 2.6e-01
trial 3 time 4.8 wce 1.7e-01
trial 4 time 4.8 wce 1.6e-01
trial 5 time 4.8 wce 2.0e-01
trial 6 time 4.8 wce 2.1e-01
trial 7 time 4.8 wce 2.2e-01
trial 8 time 4.8 wce 2.3e-01
trial 9 time 4.8 wce 2.1e-01
trial 10 time 4.8 wce 2.1e-01
trial 11 time 4.8 wce 1.8e-01
trial 12 time 4.8 wce 2.5e-01
trial 13 time 4.8 wce 1.9e-01
trial 14 time 4.8 wce 2.5e-01
trial 15 time 4.8 wce 1.8e-01
trial 16 time 4.8 wce 2.0e-01
trial 17 time 4.8 wce 2.8e-01
trial 18 time 4.8 wce 1.7e-01
trial 19 time 4.8 wce 2.9e-01
trial 20 time 4.8 wce 1.7e-01
trial 21 time 4.8 wce 1.7e-01
trial 22 time 4.8 wce 1.6e-01
trial 23 time 4.8 wce 2.3e-01
trial 24 time 4.8 wce 1.8e-01
N = 16
trial 0 time 4.8 wce 1.1e-01
trial 1 time 4.8 wce 1.2e-01
trial 2 time 4.8 wce 1.7e-01
trial 3 time 4.8 wce 1.3e-01
trial 4 time 4.8 wce 9.4e-02
trial 5 time 4.8 wce 1.8e-01
trial 6 time 4.8 wce 1.1e-01
trial 7 time 4.8 wce 1.4e-01
trial 8 time 4.8 wce 1.8e-01
trial 9 time 4.8 wce 1.4e-01
trial 10 time 4.8 wce 1.5e-01
trial 11 time 4.8 wce 1.1e-01
trial 12 time 4.8 wce 1.3e-01
trial 13 time 4.8 wce 1.3e-01
trial 14 time 4.8 wce 1.8e-01
trial 15 time 4.8 wce 1.2e-01
trial 16 time 4.8 wce 1.5e-01
trial 17 time 4.8 wce 1.2e-01
trial 18 time 4.8 wce 1.2e-01
trial 19 time 4.8 wce 1.8e-01
trial 20 time 4.8 wce 1.2e-01
trial 21 time 4.8 wce 1.5e-01
trial 22 time 4.8 wce 1.2e-01
trial 23 time 4.8 wce 1.4e-01
trial 24 time 4.8 wce 1.5e-01
N = 32
trial 0 time 4.8 wce 7.8e-02
trial 1 time 4.8 wce 6.2e-02
trial 2 time 4.8 wce 1.0e-01
trial 3 time 4.8 wce 7.6e-02
trial 4 time 4.8 wce 7.5e-02
trial 5 time 4.8 wce 1.2e-01
trial 6 time 4.8 wce 8.0e-02
trial 7 time 4.8 wce 8.9e-02
trial 8 time 4.8 wce 8.9e-02
trial 9 time 4.8 wce 8.2e-02
trial 10 time 4.8 wce 8.0e-02
trial 11 time 4.8 wce 8.6e-02
trial 12 time 4.8 wce 7.0e-02
trial 13 time 4.8 wce 7.1e-02
trial 14 time 4.8 wce 8.5e-02
trial 15 time 4.8 wce 6.7e-02
trial 16 time 4.8 wce 8.4e-02
trial 17 time 4.8 wce 9.2e-02
trial 18 time 4.8 wce 9.8e-02
trial 19 time 4.8 wce 1.0e-01
trial 20 time 4.8 wce 9.2e-02
trial 21 time 4.8 wce 9.9e-02
trial 22 time 4.8 wce 8.0e-02
trial 23 time 4.8 wce 9.2e-02
trial 24 time 4.8 wce 1.0e-01
N = 64
trial 0 time 4.8 wce 6.1e-02
trial 1 time 4.8 wce 5.2e-02
trial 2 time 4.8 wce 5.5e-02
trial 3 time 4.8 wce 5.4e-02
trial 4 time 4.8 wce 4.8e-02
trial 5 time 4.8 wce 6.3e-02
trial 6 time 4.8 wce 5.5e-02
trial 7 time 4.8 wce 5.6e-02
trial 8 time 4.8 wce 6.7e-02
trial 9 time 4.8 wce 5.4e-02
trial 10 time 4.8 wce 4.2e-02
trial 11 time 4.8 wce 5.8e-02
trial 12 time 4.8 wce 4.6e-02
trial 13 time 4.8 wce 5.7e-02
trial 14 time 4.8 wce 5.7e-02
trial 15 time 4.8 wce 4.9e-02
trial 16 time 4.8 wce 5.9e-02
trial 17 time 4.8 wce 5.5e-02
trial 18 time 4.8 wce 5.7e-02
trial 19 time 4.8 wce 6.6e-02
trial 20 time 4.8 wce 5.0e-02
trial 21 time 4.8 wce 4.6e-02
trial 22 time 4.8 wce 5.0e-02
trial 23 time 4.8 wce 5.3e-02
trial 24 time 4.8 wce 6.7e-02
N = 128
trial 0 time 4.8 wce 3.7e-02
trial 1 time 4.8 wce 3.5e-02
trial 2 time 4.8 wce 3.8e-02
trial 3 time 4.8 wce 3.4e-02
trial 4 time 4.8 wce 3.3e-02
trial 5 time 4.8 wce 4.4e-02
trial 6 time 4.8 wce 3.3e-02
trial 7 time 4.8 wce 3.4e-02
trial 8 time 4.8 wce 4.1e-02
trial 9 time 4.8 wce 4.3e-02
trial 10 time 4.8 wce 2.8e-02
trial 11 time 4.8 wce 4.3e-02
trial 12 time 4.8 wce 3.0e-02
trial 13 time 4.8 wce 4.2e-02
trial 14 time 4.8 wce 3.5e-02
trial 15 time 4.8 wce 3.8e-02
trial 16 time 4.8 wce 4.0e-02
trial 17 time 4.9 wce 3.9e-02
trial 18 time 4.9 wce 3.7e-02
trial 19 time 4.9 wce 4.6e-02
trial 20 time 4.9 wce 4.1e-02
trial 21 time 4.9 wce 3.3e-02
trial 22 time 4.9 wce 3.3e-02
trial 23 time 4.9 wce 3.4e-02
trial 24 time 4.9 wce 4.1e-02
N = 256
trial 0 time 4.9 wce 2.8e-02
trial 1 time 4.9 wce 2.9e-02
trial 2 time 4.9 wce 2.5e-02
trial 3 time 4.9 wce 3.1e-02
trial 4 time 4.9 wce 2.4e-02
trial 5 time 4.9 wce 3.4e-02
trial 6 time 4.9 wce 2.1e-02
trial 7 time 4.9 wce 2.2e-02
trial 8 time 4.9 wce 2.5e-02
trial 9 time 4.9 wce 2.1e-02
trial 10 time 4.9 wce 2.3e-02
trial 11 time 4.9 wce 2.9e-02
trial 12 time 4.9 wce 2.5e-02
trial 13 time 4.9 wce 2.5e-02
trial 14 time 4.9 wce 2.6e-02
trial 15 time 4.9 wce 2.6e-02
trial 16 time 4.9 wce 3.0e-02
trial 17 time 4.9 wce 2.2e-02
trial 18 time 4.9 wce 2.3e-02
trial 19 time 4.9 wce 3.2e-02
trial 20 time 4.9 wce 2.7e-02
trial 21 time 4.9 wce 2.5e-02
trial 22 time 4.9 wce 2.3e-02
trial 23 time 4.9 wce 2.2e-02
trial 24 time 4.9 wce 2.8e-02
N = 512
trial 0 time 4.9 wce 1.5e-02
trial 1 time 4.9 wce 1.5e-02
trial 2 time 4.9 wce 1.7e-02
trial 3 time 4.9 wce 1.6e-02
trial 4 time 4.9 wce 1.3e-02
trial 5 time 4.9 wce 1.8e-02
trial 6 time 4.9 wce 1.7e-02
trial 7 time 4.9 wce 1.6e-02
trial 8 time 4.9 wce 1.5e-02
trial 9 time 4.9 wce 1.7e-02
trial 10 time 4.9 wce 1.5e-02
trial 11 time 4.9 wce 1.6e-02
trial 12 time 4.9 wce 1.4e-02
trial 13 time 4.9 wce 1.2e-02
trial 14 time 5.0 wce 1.7e-02
trial 15 time 5.0 wce 1.5e-02
trial 16 time 5.0 wce 1.8e-02
trial 17 time 5.0 wce 1.5e-02
trial 18 time 5.0 wce 1.3e-02
trial 19 time 5.0 wce 1.9e-02
trial 20 time 5.0 wce 1.6e-02
trial 21 time 5.0 wce 1.6e-02
trial 22 time 5.0 wce 1.3e-02
trial 23 time 5.0 wce 1.6e-02
trial 24 time 5.0 wce 1.4e-02
N = 1024
trial 0 time 5.0 wce 9.8e-03
trial 1 time 5.0 wce 9.4e-03
trial 2 time 5.0 wce 1.0e-02
trial 3 time 5.0 wce 1.0e-02
trial 4 time 5.1 wce 7.9e-03
trial 5 time 5.1 wce 1.2e-02
trial 6 time 5.1 wce 8.8e-03
trial 7 time 5.1 wce 8.8e-03
trial 8 time 5.1 wce 8.3e-03
trial 9 time 5.1 wce 9.2e-03
trial 10 time 5.1 wce 8.9e-03
trial 11 time 5.1 wce 1.1e-02
trial 12 time 5.2 wce 1.1e-02
trial 13 time 5.2 wce 8.9e-03
trial 14 time 5.2 wce 1.6e-02
trial 15 time 5.2 wce 8.5e-03
trial 16 time 5.2 wce 9.7e-03
trial 17 time 5.2 wce 8.9e-03
trial 18 time 5.2 wce 1.0e-02
trial 19 time 5.2 wce 1.1e-02
trial 20 time 5.3 wce 1.1e-02
trial 21 time 5.3 wce 1.1e-02
trial 22 time 5.3 wce 9.3e-03
trial 23 time 5.3 wce 1.1e-02
trial 24 time 5.3 wce 9.1e-03
N = 2048
trial 0 time 5.3 wce 5.7e-03
trial 1 time 5.4 wce 5.9e-03
trial 2 time 5.4 wce 5.9e-03
trial 3 time 5.5 wce 6.9e-03
trial 4 time 5.5 wce 5.6e-03
trial 5 time 5.6 wce 5.9e-03
trial 6 time 5.6 wce 5.7e-03
trial 7 time 5.7 wce 5.9e-03
trial 8 time 5.7 wce 7.3e-03
trial 9 time 5.8 wce 6.3e-03
trial 10 time 5.8 wce 5.2e-03
trial 11 time 5.8 wce 7.1e-03
trial 12 time 5.9 wce 5.4e-03
trial 13 time 5.9 wce 5.7e-03
trial 14 time 6.0 wce 6.5e-03
trial 15 time 6.0 wce 6.2e-03
trial 16 time 6.1 wce 6.4e-03
trial 17 time 6.1 wce 7.3e-03
trial 18 time 6.2 wce 6.5e-03
trial 19 time 6.2 wce 6.0e-03
trial 20 time 6.3 wce 7.4e-03
trial 21 time 6.3 wce 5.1e-03
trial 22 time 6.4 wce 6.4e-03
trial 23 time 6.4 wce 7.0e-03
trial 24 time 6.4 wce 5.9e-03
Eig LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$
N = 4
trial 0 time 6.5 wce 2.6e-01
trial 1 time 6.5 wce 2.7e-01
trial 2 time 6.5 wce 2.9e-01
trial 3 time 6.5 wce 3.1e-01
trial 4 time 6.5 wce 2.6e-01
trial 5 time 6.5 wce 2.4e-01
trial 6 time 6.5 wce 2.4e-01
trial 7 time 6.5 wce 2.7e-01
trial 8 time 6.5 wce 3.2e-01
trial 9 time 6.5 wce 2.5e-01
trial 10 time 6.5 wce 2.5e-01
trial 11 time 6.5 wce 2.3e-01
trial 12 time 6.5 wce 2.4e-01
trial 13 time 6.5 wce 2.5e-01
trial 14 time 6.5 wce 2.2e-01
trial 15 time 6.5 wce 2.5e-01
trial 16 time 6.5 wce 2.8e-01
trial 17 time 6.5 wce 2.5e-01
trial 18 time 6.5 wce 2.5e-01
trial 19 time 6.5 wce 2.5e-01
trial 20 time 6.5 wce 2.6e-01
trial 21 time 6.5 wce 2.5e-01
trial 22 time 6.5 wce 2.7e-01
trial 23 time 6.5 wce 2.5e-01
trial 24 time 6.5 wce 2.6e-01
N = 8
trial 0 time 6.5 wce 1.5e-01
trial 1 time 6.5 wce 1.8e-01
trial 2 time 6.5 wce 1.6e-01
trial 3 time 6.5 wce 1.8e-01
trial 4 time 6.5 wce 1.6e-01
trial 5 time 6.5 wce 1.7e-01
trial 6 time 6.5 wce 1.7e-01
trial 7 time 6.5 wce 1.6e-01
trial 8 time 6.5 wce 1.6e-01
trial 9 time 6.5 wce 1.6e-01
trial 10 time 6.5 wce 1.6e-01
trial 11 time 6.5 wce 1.6e-01
trial 12 time 6.5 wce 1.7e-01
trial 13 time 6.5 wce 1.6e-01
trial 14 time 6.5 wce 1.4e-01
trial 15 time 6.5 wce 1.5e-01
trial 16 time 6.5 wce 1.9e-01
trial 17 time 6.5 wce 1.9e-01
trial 18 time 6.5 wce 1.6e-01
trial 19 time 6.5 wce 1.5e-01
trial 20 time 6.5 wce 2.1e-01
trial 21 time 6.5 wce 1.8e-01
trial 22 time 6.5 wce 2.0e-01
trial 23 time 6.5 wce 1.6e-01
trial 24 time 6.5 wce 1.7e-01
N = 16
trial 0 time 6.5 wce 1.3e-01
trial 1 time 6.5 wce 1.5e-01
trial 2 time 6.5 wce 1.1e-01
trial 3 time 6.5 wce 1.5e-01
trial 4 time 6.5 wce 1.2e-01
trial 5 time 6.5 wce 1.2e-01
trial 6 time 6.5 wce 1.2e-01
trial 7 time 6.5 wce 1.1e-01
trial 8 time 6.5 wce 1.1e-01
trial 9 time 6.5 wce 1.3e-01
trial 10 time 6.5 wce 1.3e-01
trial 11 time 6.5 wce 1.2e-01
trial 12 time 6.5 wce 1.3e-01
trial 13 time 6.5 wce 1.3e-01
trial 14 time 6.5 wce 1.2e-01
trial 15 time 6.5 wce 1.3e-01
trial 16 time 6.5 wce 1.3e-01
trial 17 time 6.5 wce 1.4e-01
trial 18 time 6.5 wce 1.3e-01
trial 19 time 6.5 wce 1.2e-01
trial 20 time 6.5 wce 1.3e-01
trial 21 time 6.5 wce 1.4e-01
trial 22 time 6.5 wce 1.4e-01
trial 23 time 6.5 wce 1.4e-01
trial 24 time 6.5 wce 1.2e-01
N = 32
trial 0 time 6.5 wce 7.4e-02
trial 1 time 6.5 wce 7.6e-02
trial 2 time 6.5 wce 7.2e-02
trial 3 time 6.5 wce 7.5e-02
trial 4 time 6.5 wce 8.7e-02
trial 5 time 6.5 wce 7.9e-02
trial 6 time 6.5 wce 8.5e-02
trial 7 time 6.5 wce 7.8e-02
trial 8 time 6.5 wce 6.8e-02
trial 9 time 6.5 wce 7.3e-02
trial 10 time 6.5 wce 8.3e-02
trial 11 time 6.5 wce 8.0e-02
trial 12 time 6.5 wce 6.8e-02
trial 13 time 6.5 wce 8.4e-02
trial 14 time 6.5 wce 7.7e-02
trial 15 time 6.5 wce 6.7e-02
trial 16 time 6.5 wce 7.8e-02
trial 17 time 6.5 wce 9.0e-02
trial 18 time 6.5 wce 8.0e-02
trial 19 time 6.5 wce 8.3e-02
trial 20 time 6.5 wce 7.6e-02
trial 21 time 6.5 wce 7.9e-02
trial 22 time 6.5 wce 8.8e-02
trial 23 time 6.5 wce 8.8e-02
trial 24 time 6.5 wce 7.9e-02
N = 64
trial 0 time 6.5 wce 4.1e-02
trial 1 time 6.5 wce 3.8e-02
trial 2 time 6.5 wce 4.0e-02
trial 3 time 6.5 wce 5.2e-02
trial 4 time 6.5 wce 4.3e-02
trial 5 time 6.5 wce 5.0e-02
trial 6 time 6.5 wce 4.4e-02
trial 7 time 6.5 wce 4.2e-02
trial 8 time 6.5 wce 4.1e-02
trial 9 time 6.5 wce 4.1e-02
trial 10 time 6.5 wce 5.1e-02
trial 11 time 6.5 wce 5.2e-02
trial 12 time 6.5 wce 4.3e-02
trial 13 time 6.5 wce 5.5e-02
trial 14 time 6.5 wce 3.7e-02
trial 15 time 6.5 wce 4.2e-02
trial 16 time 6.5 wce 4.7e-02
trial 17 time 6.5 wce 4.7e-02
trial 18 time 6.5 wce 3.7e-02
trial 19 time 6.5 wce 4.5e-02
trial 20 time 6.5 wce 4.5e-02
trial 21 time 6.5 wce 4.7e-02
trial 22 time 6.5 wce 4.6e-02
trial 23 time 6.5 wce 4.6e-02
trial 24 time 6.5 wce 4.8e-02
N = 128
trial 0 time 6.5 wce 2.9e-02
trial 1 time 6.5 wce 2.7e-02
trial 2 time 6.5 wce 3.0e-02
trial 3 time 6.5 wce 3.5e-02
trial 4 time 6.5 wce 2.9e-02
trial 5 time 6.5 wce 3.9e-02
trial 6 time 6.5 wce 2.9e-02
trial 7 time 6.5 wce 2.8e-02
trial 8 time 6.5 wce 3.3e-02
trial 9 time 6.5 wce 3.0e-02
trial 10 time 6.5 wce 3.6e-02
trial 11 time 6.5 wce 3.8e-02
trial 12 time 6.5 wce 3.4e-02
trial 13 time 6.5 wce 3.7e-02
trial 14 time 6.5 wce 2.7e-02
trial 15 time 6.5 wce 2.9e-02
trial 16 time 6.5 wce 3.7e-02
trial 17 time 6.5 wce 3.2e-02
trial 18 time 6.5 wce 2.7e-02
trial 19 time 6.5 wce 3.3e-02
trial 20 time 6.5 wce 3.3e-02
trial 21 time 6.6 wce 3.0e-02
trial 22 time 6.6 wce 3.6e-02
trial 23 time 6.6 wce 3.5e-02
trial 24 time 6.6 wce 3.4e-02
N = 256
trial 0 time 6.6 wce 1.9e-02
trial 1 time 6.6 wce 1.6e-02
trial 2 time 6.6 wce 1.8e-02
trial 3 time 6.6 wce 1.8e-02
trial 4 time 6.6 wce 1.7e-02
trial 5 time 6.6 wce 1.8e-02
trial 6 time 6.6 wce 2.3e-02
trial 7 time 6.6 wce 1.7e-02
trial 8 time 6.6 wce 2.2e-02
trial 9 time 6.6 wce 2.0e-02
trial 10 time 6.6 wce 2.1e-02
trial 11 time 6.6 wce 1.7e-02
trial 12 time 6.6 wce 1.7e-02
trial 13 time 6.6 wce 2.2e-02
trial 14 time 6.6 wce 1.7e-02
trial 15 time 6.6 wce 1.7e-02
trial 16 time 6.6 wce 1.9e-02
trial 17 time 6.6 wce 1.6e-02
trial 18 time 6.6 wce 1.8e-02
trial 19 time 6.6 wce 1.8e-02
trial 20 time 6.6 wce 1.9e-02
trial 21 time 6.6 wce 1.7e-02
trial 22 time 6.6 wce 2.0e-02
trial 23 time 6.6 wce 1.9e-02
trial 24 time 6.6 wce 1.8e-02
N = 512
trial 0 time 6.6 wce 1.4e-02
trial 1 time 6.6 wce 1.1e-02
trial 2 time 6.6 wce 1.2e-02
trial 3 time 6.6 wce 1.1e-02
trial 4 time 6.6 wce 1.2e-02
trial 5 time 6.6 wce 1.1e-02
trial 6 time 6.6 wce 1.5e-02
trial 7 time 6.6 wce 1.2e-02
trial 8 time 6.6 wce 1.5e-02
trial 9 time 6.6 wce 1.3e-02
trial 10 time 6.6 wce 1.4e-02
trial 11 time 6.6 wce 1.1e-02
trial 12 time 6.7 wce 1.4e-02
trial 13 time 6.7 wce 1.4e-02
trial 14 time 6.7 wce 1.3e-02
trial 15 time 6.7 wce 1.3e-02
trial 16 time 6.7 wce 1.1e-02
trial 17 time 6.7 wce 1.1e-02
trial 18 time 6.7 wce 1.4e-02
trial 19 time 6.7 wce 1.3e-02
trial 20 time 6.7 wce 1.1e-02
trial 21 time 6.7 wce 1.1e-02
trial 22 time 6.7 wce 1.3e-02
trial 23 time 6.7 wce 1.5e-02
trial 24 time 6.7 wce 1.2e-02
N = 1024
trial 0 time 6.7 wce 7.4e-03
trial 1 time 6.7 wce 7.2e-03
trial 2 time 6.8 wce 8.0e-03
trial 3 time 6.8 wce 7.6e-03
trial 4 time 6.8 wce 6.9e-03
trial 5 time 6.8 wce 6.8e-03
trial 6 time 6.8 wce 7.7e-03
trial 7 time 6.8 wce 7.1e-03
trial 8 time 6.8 wce 6.6e-03
trial 9 time 6.8 wce 7.5e-03
trial 10 time 6.9 wce 9.7e-03
trial 11 time 6.9 wce 8.2e-03
trial 12 time 6.9 wce 7.9e-03
trial 13 time 6.9 wce 7.6e-03
trial 14 time 6.9 wce 8.2e-03
trial 15 time 6.9 wce 7.0e-03
trial 16 time 6.9 wce 7.6e-03
trial 17 time 7.0 wce 7.1e-03
trial 18 time 7.0 wce 7.7e-03
trial 19 time 7.0 wce 9.3e-03
trial 20 time 7.0 wce 7.4e-03
trial 21 time 7.0 wce 7.1e-03
trial 22 time 7.0 wce 7.0e-03
trial 23 time 7.1 wce 8.1e-03
trial 24 time 7.1 wce 8.3e-03
N = 2048
trial 0 time 7.1 wce 4.4e-03
trial 1 time 7.2 wce 4.9e-03
trial 2 time 7.2 wce 5.0e-03
trial 3 time 7.3 wce 4.5e-03
trial 4 time 7.3 wce 4.9e-03
trial 5 time 7.4 wce 4.7e-03
trial 6 time 7.4 wce 5.2e-03
trial 7 time 7.5 wce 4.9e-03
trial 8 time 7.5 wce 4.6e-03
trial 9 time 7.6 wce 5.7e-03
trial 10 time 7.6 wce 5.3e-03
trial 11 time 7.7 wce 4.6e-03
trial 12 time 7.7 wce 4.2e-03
trial 13 time 7.8 wce 5.3e-03
trial 14 time 7.8 wce 5.2e-03
trial 15 time 7.9 wce 5.3e-03
trial 16 time 7.9 wce 5.0e-03
trial 17 time 8.0 wce 4.6e-03
trial 18 time 8.0 wce 5.1e-03
trial 19 time 8.1 wce 6.0e-03
trial 20 time 8.1 wce 4.9e-03
trial 21 time 8.1 wce 5.3e-03
trial 22 time 8.2 wce 5.0e-03
trial 23 time 8.2 wce 5.4e-03
trial 24 time 8.3 wce 5.0e-03
In [ ]:
Copied!
def genflag_opt_x_w(
N,
delta,
seed=None,
verbose = False,
iters = 100,
eps_kmat = 1e-8,
verbose_indent = 4,
):
assert manifold_type=="flag"
assert field=="R"
n = delta.size(-1)
u = torch.from_numpy(qp.Net(dimension=n**2,seed=seed)(N)).to(DEVICE)
theta0 = rmatqmcpy.tf_On_QR(u,n,n)
zerosn = torch.zeros(N,device=DEVICE)
onesn = torch.ones(N,device=DEVICE)
eyen = torch.eye(N,device=DEVICE)
def wce_recip_loss(theta):
q = agsutil.to_unitary_qr(theta)
x = torch.einsum("...ij,...j,...kj->...ik",q,delta,q)
kmat = kernel(x[...,:,None,:,:],x[...,None,:,:,:]) # (N,N)
L = torch.linalg.cholesky(kmat+eps_kmat*eyen,upper=False) # (N,N)
v = torch.linalg.solve_triangular(L,onesn[...,None],upper=False)[...,0]
return v,x,L
u,x,L = agsutil.lm_opt(
f = wce_recip_loss,
theta0 = theta0,
ytrue = zerosn,
iters = iters,
lam0 = 1e0,
verbose = verbose,
verbose_indent = verbose_indent,
loss_mult = -1,
# store_data_iters = True,
)
# print(data["losses_quantiles"]["50"])
# print(data["losses_quantiles"]["50"][1:]-data["losses_quantiles"]["50"][:-1])
w = torch.cholesky_solve(onesn[...,None],L,upper=False)[...,0]
w = w/w.sum(-1,keepdim=True)
kmat = kernel(x[...,:,None,:,:],x[...,None,:,:,:]) # (N,N)
wce2_p_kmean = torch.einsum("...i,...ij,...j->...",w,kmat,w) # (...,)
return x,w,wce2_p_kmean
# genflag_opt_x_w(
# N = 2**4,
# delta=delta,
# seed = 17,
# verbose = None)
if False and manifold_type=="flag" and field=="R":
genf_ld_optw_decomp += [[r"Opt $\mathcal{X}$ ~ Opt $\boldsymbol{w}$", "opt", "opt", "default"]]
wces_opt_x_w = torch.nan*torch.empty((len(N),trials))
t0 = time.perf_counter()
for j in range(len(N)):
print(" N = %d"%N[j])
t0_ij = time.perf_counter()
for t in range(trials):
x,w,wce2_p_kmean = genflag_opt_x_w(N=N[j],delta=delta,seed=seeds[t],verbose=False)
wces_opt_x_w[j,t] = np.sqrt(max(0,float(wce2_p_kmean.cpu()-kmean)))
print(" trial %-10d time %-10.1f wce %-10.1e"%(t,time.perf_counter()-t0,wces[i,j,t]))
if (time.perf_counter()-t0_ij)/trials>2:
break
wces = torch.cat([wces,wces_opt_x_w[None,:,:]],dim=0)
def genflag_opt_x_w(
N,
delta,
seed=None,
verbose = False,
iters = 100,
eps_kmat = 1e-8,
verbose_indent = 4,
):
assert manifold_type=="flag"
assert field=="R"
n = delta.size(-1)
u = torch.from_numpy(qp.Net(dimension=n**2,seed=seed)(N)).to(DEVICE)
theta0 = rmatqmcpy.tf_On_QR(u,n,n)
zerosn = torch.zeros(N,device=DEVICE)
onesn = torch.ones(N,device=DEVICE)
eyen = torch.eye(N,device=DEVICE)
def wce_recip_loss(theta):
q = agsutil.to_unitary_qr(theta)
x = torch.einsum("...ij,...j,...kj->...ik",q,delta,q)
kmat = kernel(x[...,:,None,:,:],x[...,None,:,:,:]) # (N,N)
L = torch.linalg.cholesky(kmat+eps_kmat*eyen,upper=False) # (N,N)
v = torch.linalg.solve_triangular(L,onesn[...,None],upper=False)[...,0]
return v,x,L
u,x,L = agsutil.lm_opt(
f = wce_recip_loss,
theta0 = theta0,
ytrue = zerosn,
iters = iters,
lam0 = 1e0,
verbose = verbose,
verbose_indent = verbose_indent,
loss_mult = -1,
# store_data_iters = True,
)
# print(data["losses_quantiles"]["50"])
# print(data["losses_quantiles"]["50"][1:]-data["losses_quantiles"]["50"][:-1])
w = torch.cholesky_solve(onesn[...,None],L,upper=False)[...,0]
w = w/w.sum(-1,keepdim=True)
kmat = kernel(x[...,:,None,:,:],x[...,None,:,:,:]) # (N,N)
wce2_p_kmean = torch.einsum("...i,...ij,...j->...",w,kmat,w) # (...,)
return x,w,wce2_p_kmean
# genflag_opt_x_w(
# N = 2**4,
# delta=delta,
# seed = 17,
# verbose = None)
if False and manifold_type=="flag" and field=="R":
genf_ld_optw_decomp += [[r"Opt $\mathcal{X}$ ~ Opt $\boldsymbol{w}$", "opt", "opt", "default"]]
wces_opt_x_w = torch.nan*torch.empty((len(N),trials))
t0 = time.perf_counter()
for j in range(len(N)):
print(" N = %d"%N[j])
t0_ij = time.perf_counter()
for t in range(trials):
x,w,wce2_p_kmean = genflag_opt_x_w(N=N[j],delta=delta,seed=seeds[t],verbose=False)
wces_opt_x_w[j,t] = np.sqrt(max(0,float(wce2_p_kmean.cpu()-kmean)))
print(" trial %-10d time %-10.1f wce %-10.1e"%(t,time.perf_counter()-t0,wces[i,j,t]))
if (time.perf_counter()-t0_ij)/trials>2:
break
wces = torch.cat([wces,wces_opt_x_w[None,:,:]],dim=0)
N = 4
trial 0 time 1.2 wce 2.6e-01
trial 1 time 1.4 wce 2.7e-01
trial 2 time 1.6 wce 2.9e-01
trial 3 time 1.8 wce 3.1e-01
trial 4 time 2.0 wce 2.6e-01
trial 5 time 2.2 wce 2.4e-01
trial 6 time 2.4 wce 2.4e-01
trial 7 time 2.6 wce 2.7e-01
trial 8 time 2.8 wce 3.2e-01
trial 9 time 3.0 wce 2.5e-01
trial 10 time 3.1 wce 2.5e-01
trial 11 time 3.3 wce 2.3e-01
trial 12 time 3.5 wce 2.4e-01
trial 13 time 3.7 wce 2.5e-01
trial 14 time 3.9 wce 2.2e-01
trial 15 time 4.1 wce 2.5e-01
trial 16 time 4.3 wce 2.8e-01
trial 17 time 4.5 wce 2.5e-01
trial 18 time 4.7 wce 2.5e-01
trial 19 time 4.9 wce 2.5e-01
trial 20 time 5.1 wce 2.6e-01
trial 21 time 5.3 wce 2.5e-01
trial 22 time 5.5 wce 2.7e-01
trial 23 time 5.7 wce 2.5e-01
trial 24 time 5.9 wce 2.6e-01
N = 8
trial 0 time 6.1 wce 1.5e-01
trial 1 time 6.3 wce 1.8e-01
trial 2 time 6.5 wce 1.6e-01
trial 3 time 6.7 wce 1.8e-01
trial 4 time 6.9 wce 1.6e-01
trial 5 time 7.1 wce 1.7e-01
trial 6 time 7.4 wce 1.7e-01
trial 7 time 7.6 wce 1.6e-01
trial 8 time 7.8 wce 1.6e-01
trial 9 time 8.0 wce 1.6e-01
trial 10 time 8.2 wce 1.6e-01
trial 11 time 8.4 wce 1.6e-01
trial 12 time 8.6 wce 1.7e-01
trial 13 time 8.8 wce 1.6e-01
trial 14 time 9.0 wce 1.4e-01
trial 15 time 9.2 wce 1.5e-01
trial 16 time 9.4 wce 1.9e-01
trial 17 time 9.6 wce 1.9e-01
trial 18 time 9.8 wce 1.6e-01
trial 19 time 10.0 wce 1.5e-01
trial 20 time 10.2 wce 2.1e-01
trial 21 time 10.4 wce 1.8e-01
trial 22 time 10.7 wce 2.0e-01
trial 23 time 10.9 wce 1.6e-01
trial 24 time 11.1 wce 1.7e-01
N = 16
trial 0 time 11.3 wce 1.3e-01
trial 1 time 11.6 wce 1.5e-01
trial 2 time 11.8 wce 1.1e-01
trial 3 time 12.1 wce 1.5e-01
trial 4 time 12.3 wce 1.2e-01
trial 5 time 12.6 wce 1.2e-01
trial 6 time 12.8 wce 1.2e-01
trial 7 time 13.1 wce 1.1e-01
trial 8 time 13.3 wce 1.1e-01
trial 9 time 13.6 wce 1.3e-01
trial 10 time 13.8 wce 1.3e-01
trial 11 time 14.0 wce 1.2e-01
trial 12 time 14.3 wce 1.3e-01
trial 13 time 14.5 wce 1.3e-01
trial 14 time 14.8 wce 1.2e-01
trial 15 time 15.0 wce 1.3e-01
trial 16 time 15.3 wce 1.3e-01
trial 17 time 15.5 wce 1.4e-01
trial 18 time 15.8 wce 1.3e-01
trial 19 time 16.0 wce 1.2e-01
trial 20 time 16.3 wce 1.3e-01
trial 21 time 16.5 wce 1.4e-01
trial 22 time 16.8 wce 1.4e-01
trial 23 time 17.0 wce 1.4e-01
trial 24 time 17.2 wce 1.2e-01
N = 32
trial 0 time 17.7 wce 7.4e-02
trial 1 time 18.1 wce 7.6e-02
trial 2 time 18.6 wce 7.2e-02
trial 3 time 19.0 wce 7.5e-02
trial 4 time 19.4 wce 8.7e-02
trial 5 time 19.9 wce 7.9e-02
trial 6 time 20.3 wce 8.5e-02
trial 7 time 20.7 wce 7.8e-02
trial 8 time 21.2 wce 6.8e-02
trial 9 time 21.6 wce 7.3e-02
trial 10 time 22.0 wce 8.3e-02
trial 11 time 22.5 wce 8.0e-02
trial 12 time 22.9 wce 6.8e-02
trial 13 time 23.4 wce 8.4e-02
trial 14 time 23.8 wce 7.7e-02
trial 15 time 24.2 wce 6.7e-02
trial 16 time 24.7 wce 7.8e-02
trial 17 time 25.1 wce 9.0e-02
trial 18 time 25.5 wce 8.0e-02
trial 19 time 26.0 wce 8.3e-02
trial 20 time 26.4 wce 7.6e-02
trial 21 time 26.9 wce 7.9e-02
trial 22 time 27.3 wce 8.8e-02
trial 23 time 27.8 wce 8.8e-02
trial 24 time 28.3 wce 7.9e-02
N = 64
trial 0 time 29.6 wce 4.1e-02
trial 1 time 31.0 wce 3.8e-02
trial 2 time 32.3 wce 4.0e-02
trial 3 time 33.8 wce 5.2e-02
trial 4 time 35.3 wce 4.3e-02
trial 5 time 36.8 wce 5.0e-02
trial 6 time 38.3 wce 4.4e-02
trial 7 time 39.8 wce 4.2e-02
trial 8 time 41.3 wce 4.1e-02
trial 9 time 42.8 wce 4.1e-02
trial 10 time 44.3 wce 5.1e-02
trial 11 time 45.9 wce 5.2e-02
trial 12 time 47.4 wce 4.3e-02
trial 13 time 48.9 wce 5.5e-02
trial 14 time 50.5 wce 3.7e-02
trial 15 time 51.9 wce 4.2e-02
trial 16 time 53.5 wce 4.7e-02
trial 17 time 54.9 wce 4.7e-02
trial 18 time 56.4 wce 3.7e-02
trial 19 time 57.9 wce 4.5e-02
trial 20 time 59.6 wce 4.5e-02
trial 21 time 61.3 wce 4.7e-02
trial 22 time 62.9 wce 4.6e-02
trial 23 time 64.4 wce 4.6e-02
trial 24 time 65.9 wce 4.8e-02
N = 128
trial 0 time 73.0 wce 2.9e-02
trial 1 time 80.5 wce 2.7e-02
trial 2 time 87.8 wce 3.0e-02
trial 3 time 95.1 wce 3.5e-02
trial 4 time 102.6 wce 2.9e-02
trial 5 time 110.1 wce 3.9e-02
trial 6 time 117.5 wce 2.9e-02
trial 7 time 125.7 wce 2.8e-02
trial 8 time 133.0 wce 3.3e-02
trial 9 time 140.3 wce 3.0e-02
trial 10 time 147.6 wce 3.6e-02
trial 11 time 155.0 wce 3.8e-02
trial 12 time 162.3 wce 3.4e-02
trial 13 time 169.9 wce 3.7e-02
trial 14 time 177.4 wce 2.7e-02
trial 15 time 184.8 wce 2.9e-02
trial 16 time 192.9 wce 3.7e-02
trial 17 time 200.5 wce 3.2e-02
trial 18 time 208.1 wce 2.7e-02
trial 19 time 215.6 wce 3.3e-02
trial 20 time 223.4 wce 3.3e-02
trial 21 time 230.8 wce 3.0e-02
trial 22 time 238.3 wce 3.6e-02
trial 23 time 245.9 wce 3.5e-02
trial 24 time 253.7 wce 3.4e-02
In [6]:
Copied!
data = {
"names": [key for key,*_ in genf_ld_optw_decomp],
"wces": wces,
"manifold_type": manifold_type,
"field": field,
"n": n,
"nu": nu,
"d": d,
"r": r,
"s": s,
"N": N,
"nu_str": kernel.nu_str,
}
if manifold_type in ["flag"]:
data["delta"] = delta
data["m"] = m
if manifold_type in ["Stiefel","Gr"]:
data["k"] = k
torch.save(data,"./out/data/%s_%s.n%d.d%d.nu%s.pt"%(manifold_type,field,n,d,nu))
data = {
"names": [key for key,*_ in genf_ld_optw_decomp],
"wces": wces,
"manifold_type": manifold_type,
"field": field,
"n": n,
"nu": nu,
"d": d,
"r": r,
"s": s,
"N": N,
"nu_str": kernel.nu_str,
}
if manifold_type in ["flag"]:
data["delta"] = delta
data["m"] = m
if manifold_type in ["Stiefel","Gr"]:
data["k"] = k
torch.save(data,"./out/data/%s_%s.n%d.d%d.nu%s.pt"%(manifold_type,field,n,d,nu))
In [7]:
Copied!
fig,ax = pyplot.subplots(nrows=1,ncols=1,figsize=(MPLP["PW"]/1.5,MPLP["PW"]/1.5/1.5),sharex=True,sharey=False)
wces_means = wces.mean(-1)
for i,(key,*_) in enumerate(genf_ld_optw_decomp):
ax.plot(N,wces_means[i],color=MPLP["COLORS"][i],marker=MPLP["MARKERS"][i],label=key)
ax.set_yscale("log",base=10)
ax.set_xscale("log",base=2)
# xmin,xmax = [N[0],N[-1]]
xmin,xmax = ax.get_xlim()
ymin,ymax = ax.get_ylim()
ax.set_xlim([xmin,xmax])
ax.set_ylim([ymin,ymax])
# ax.axline([xmax,ymin],[2*xmax,2**(-1/2)*ymin],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-1/2})$",linestyle="dashed")
# ax.axline([xmax,ymin],[2*xmax,2**(-s/d)*ymin],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-s/d})$",linestyle="dotted")
ax.axline([xmin,ymax],[2*xmin,2**(-1/2)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-1/2})$",linestyle="dashed")
ax.axline([xmin,ymax],[2*xmin,2**(-s/d)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-s/d})$",linestyle="dotted")
# ax.plot(N,ymax/(xmin**(-s/d)*torch.log(xmin)**(s/d))*N**(-s/d)*torch.log(N)**(s/d),color="k",alpha=0.5,linestyle="dashdot",label=r"$\mathcal{O}(N^{-s/d} \log(N)^{s/d})$")
ax.legend(frameon=False,ncols=4,loc="lower center",bbox_to_anchor=(.5,-.3))
assert s==np.inf or s%1 in [0,1/2]
if s==np.inf:
s_str = r"\infty"
elif s%1==0:
s_str = r"%d"%s
elif s%1==1/2:
s_str = r"%d/2"%(2*s)
ax.set_title("WCE: "+manifold_type+r"($\mathbb{%s}$),"%field+r" Matérn(%s)"%kernel.nu_str+r", $s = %s$"%s_str+r", $d=%d$"%d+r", $s/d = %.2f$"%(s/d))
ax.set_xlabel(r"$N$")
fig.tight_layout()
fig.savefig("./out/WCE.%s_%s.n%d.d%d.nu%s.png"%(manifold_type,field,n,d,nu))
fig,ax = pyplot.subplots(nrows=1,ncols=1,figsize=(MPLP["PW"]/1.5,MPLP["PW"]/1.5/1.5),sharex=True,sharey=False)
wces_means = wces.mean(-1)
for i,(key,*_) in enumerate(genf_ld_optw_decomp):
ax.plot(N,wces_means[i],color=MPLP["COLORS"][i],marker=MPLP["MARKERS"][i],label=key)
ax.set_yscale("log",base=10)
ax.set_xscale("log",base=2)
# xmin,xmax = [N[0],N[-1]]
xmin,xmax = ax.get_xlim()
ymin,ymax = ax.get_ylim()
ax.set_xlim([xmin,xmax])
ax.set_ylim([ymin,ymax])
# ax.axline([xmax,ymin],[2*xmax,2**(-1/2)*ymin],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-1/2})$",linestyle="dashed")
# ax.axline([xmax,ymin],[2*xmax,2**(-s/d)*ymin],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-s/d})$",linestyle="dotted")
ax.axline([xmin,ymax],[2*xmin,2**(-1/2)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-1/2})$",linestyle="dashed")
ax.axline([xmin,ymax],[2*xmin,2**(-s/d)*ymax],color="k",alpha=0.5,label=r"$\mathcal{O}(N^{-s/d})$",linestyle="dotted")
# ax.plot(N,ymax/(xmin**(-s/d)*torch.log(xmin)**(s/d))*N**(-s/d)*torch.log(N)**(s/d),color="k",alpha=0.5,linestyle="dashdot",label=r"$\mathcal{O}(N^{-s/d} \log(N)^{s/d})$")
ax.legend(frameon=False,ncols=4,loc="lower center",bbox_to_anchor=(.5,-.3))
assert s==np.inf or s%1 in [0,1/2]
if s==np.inf:
s_str = r"\infty"
elif s%1==0:
s_str = r"%d"%s
elif s%1==1/2:
s_str = r"%d/2"%(2*s)
ax.set_title("WCE: "+manifold_type+r"($\mathbb{%s}$),"%field+r" Matérn(%s)"%kernel.nu_str+r", $s = %s$"%s_str+r", $d=%d$"%d+r", $s/d = %.2f$"%(s/d))
ax.set_xlabel(r"$N$")
fig.tight_layout()
fig.savefig("./out/WCE.%s_%s.n%d.d%d.nu%s.png"%(manifold_type,field,n,d,nu))
In [8]:
Copied!
wces_df = pd.DataFrame(wces.mean(-1).T,columns=[name for (name,*_) in genf_ld_optw_decomp])
wces_df['N'] = N
wces_df = wces_df.set_index('N')
print(r"WCEs")
wces_df
wces_df = pd.DataFrame(wces.mean(-1).T,columns=[name for (name,*_) in genf_ld_optw_decomp])
wces_df['N'] = N
wces_df = wces_df.set_index('N')
print(r"WCEs")
wces_df
WCEs
Out[8]:
| IID $\mathcal{X}$ ~ Equal $\boldsymbol{w}$ | IID $\mathcal{X}$ ~ Opt $\boldsymbol{w}$ | QR LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$ | Eig LD $\mathcal{X}$ ~ Equal $\boldsymbol{w}$ | Opt $\mathcal{X}$ ~ Opt $\boldsymbol{w}$ | |
|---|---|---|---|---|---|
| N | |||||
| 4 | 0.361215 | 0.339107 | 0.349669 | 0.259618 | 0.212375 |
| 8 | 0.261323 | 0.219981 | 0.204277 | 0.168501 | 0.110530 |
| 16 | 0.173973 | 0.120495 | 0.138281 | 0.127865 | 0.057231 |
| 32 | 0.123209 | 0.071197 | 0.085973 | 0.078704 | 0.029672 |
| 64 | 0.083254 | 0.038439 | 0.055134 | 0.044757 | 0.015112 |
| 128 | 0.060306 | 0.020290 | 0.037141 | 0.032407 | 0.007672 |
| 256 | 0.039578 | 0.010637 | 0.025724 | 0.018456 | NaN |
| 512 | 0.028719 | 0.005443 | 0.015587 | 0.012685 | NaN |
| 1024 | 0.019371 | 0.002729 | 0.010031 | 0.007639 | NaN |
| 2048 | 0.014857 | 0.001350 | 0.006210 | 0.004998 | NaN |
In [ ]:
Copied!