mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-30 14:35:15 +02:00
add pca_joint initialization for ssmrd
This commit is contained in:
parent
c7ea906763
commit
fd0f0f2902
1 changed files with 18 additions and 11 deletions
|
|
@ -38,7 +38,7 @@ class SSMRD(Model):
|
||||||
|
|
||||||
self.models[0].X.mean.tie_vector(*[m.X.mean for m in self.models[1:]])
|
self.models[0].X.mean.tie_vector(*[m.X.mean for m in self.models[1:]])
|
||||||
self.models[0].X.variance.tie_vector(*[m.X.variance for m in self.models[1:]])
|
self.models[0].X.variance.tie_vector(*[m.X.variance for m in self.models[1:]])
|
||||||
self.models[0].kern.tie_vector(*[m.kern for m in self.models[1:]])
|
# self.models[0].kern.tie_vector(*[m.kern for m in self.models[1:]])
|
||||||
|
|
||||||
def parameters_changed(self):
|
def parameters_changed(self):
|
||||||
varp_list = [m.X for m in self.models]
|
varp_list = [m.X for m in self.models]
|
||||||
|
|
@ -51,6 +51,7 @@ class SSMRD(Model):
|
||||||
|
|
||||||
def _init_X(self, Ylist, input_dim, X=None, X_variance=None, Gammas=None, initx='PCA_concat'):
|
def _init_X(self, Ylist, input_dim, X=None, X_variance=None, Gammas=None, initx='PCA_concat'):
|
||||||
|
|
||||||
|
|
||||||
# Divide latent dimensions
|
# Divide latent dimensions
|
||||||
idx = np.empty((input_dim,),dtype=np.int)
|
idx = np.empty((input_dim,),dtype=np.int)
|
||||||
residue = (input_dim)%(len(Ylist))
|
residue = (input_dim)%(len(Ylist))
|
||||||
|
|
@ -63,19 +64,25 @@ class SSMRD(Model):
|
||||||
idx[i*size+residue:(i+1)*size+residue] = i
|
idx[i*size+residue:(i+1)*size+residue] = i
|
||||||
|
|
||||||
if X is None:
|
if X is None:
|
||||||
X = np.empty((Ylist[0].shape[0],input_dim))
|
if initx == 'PCA_concat':
|
||||||
fracs = np.empty((input_dim,))
|
X = np.empty((Ylist[0].shape[0],input_dim))
|
||||||
from ..util.initialization import initialize_latent
|
fracs = np.empty((input_dim,))
|
||||||
for i in xrange(len(Ylist)):
|
from ..util.initialization import initialize_latent
|
||||||
Y = Ylist[i]
|
for i in xrange(len(Ylist)):
|
||||||
dim = (idx==i).sum()
|
Y = Ylist[i]
|
||||||
if dim>0:
|
dim = (idx==i).sum()
|
||||||
x, fr = initialize_latent('PCA', dim, Y)
|
if dim>0:
|
||||||
X[:,idx==i] = x
|
x, fr = initialize_latent('PCA', dim, Y)
|
||||||
fracs[idx==i] = fr
|
X[:,idx==i] = x
|
||||||
|
fracs[idx==i] = fr
|
||||||
|
elif initx=='PCA_joint':
|
||||||
|
y = np.hstack(Ylist)
|
||||||
|
from ..util.initialization import initialize_latent
|
||||||
|
X, fracs = initialize_latent('PCA', input_dim, y)
|
||||||
else:
|
else:
|
||||||
fracs = np.ones(input_dim)
|
fracs = np.ones(input_dim)
|
||||||
|
|
||||||
|
|
||||||
if X_variance is None: # The variance of the variational approximation (S)
|
if X_variance is None: # The variance of the variational approximation (S)
|
||||||
X_variance = np.random.uniform(0,.1,X.shape)
|
X_variance = np.random.uniform(0,.1,X.shape)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue