1''' 2Created on 24 Feb 2014 3 4@author: maxz 5''' 6 7import numpy as np 8from ..util.pca import PCA 9 10def initialize_latent(init, input_dim, Y): 11 Xr = np.asfortranarray(np.random.normal(0, 1, (Y.shape[0], input_dim))) 12 if 'PCA' in init: 13 p = PCA(Y) 14 PC = p.project(Y, min(input_dim, Y.shape[1])) 15 Xr[:PC.shape[0], :PC.shape[1]] = PC 16 var = .1*p.fracs[:input_dim] 17 elif init in 'empirical_samples': 18 from ..util.linalg import tdot 19 from ..util import diag 20 YYT = tdot(Y) 21 diag.add(YYT, 1e-6) 22 EMP = np.asfortranarray(np.random.multivariate_normal(np.zeros(Y.shape[0]), YYT, min(input_dim, Y.shape[1])).T) 23 Xr[:EMP.shape[0], :EMP.shape[1]] = EMP 24 var = np.random.uniform(0.5, 1.5, input_dim) 25 else: 26 var = Xr.var(0) 27 28 Xr -= Xr.mean(0) 29 Xr /= Xr.std(0) 30 31 return Xr, var/var.max() 32