Convex Bayesian Potential Head / conditional_bayesian_potential_track.py

Mechanism confirmed, baseline not beaten

Raw ⬇ ZIP
 1import numpy as np
 2META={'name':'conditional_bayesian_potential','domain':'probabilistic-inverse','description':'Noisy inverse problem with a two-component latent prior and normalized conditional posterior potential.'}
 3def get_dataset(seed,n_train=400,n_test=400):
 4    def sample(n,rng):
 5        z=rng.normal(size=n)
 6        x=np.where(rng.random(n)<.55,-.9+.55*z,.9+.38*z)
 7        y=x+.48*rng.normal(size=n)
 8        return y[:,None].astype('float32'),x[:,None].astype('float32')
 9    xtr,ytr=sample(n_train,np.random.default_rng(int(seed)))
10    xte,yte=sample(n_test,np.random.default_rng(int(seed)+10000))
11    return {'xtr':xtr,'ytr':ytr,'xte':xte,'yte':yte,'task':'regression','metric':'mse','out_dim':1,'input_shape':(1,)}