2014-02-24 14:56:28 +00:00
|
|
|
'''
|
|
|
|
|
Created on 24 Feb 2014
|
|
|
|
|
|
|
|
|
|
@author: maxz
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
import numpy as np
|
2015-09-18 16:21:31 +01:00
|
|
|
from ..util.pca import PCA
|
2014-02-24 14:56:28 +00:00
|
|
|
|
|
|
|
|
def initialize_latent(init, input_dim, Y):
|
2015-09-18 16:21:31 +01:00
|
|
|
Xr = np.asfortranarray(np.random.normal(0, 1, (Y.shape[0], input_dim)))
|
|
|
|
|
if 'PCA' in init:
|
2014-10-17 11:45:04 +01:00
|
|
|
p = PCA(Y)
|
2014-03-24 11:16:57 +00:00
|
|
|
PC = p.project(Y, min(input_dim, Y.shape[1]))
|
2014-02-24 14:56:28 +00:00
|
|
|
Xr[:PC.shape[0], :PC.shape[1]] = PC
|
2014-10-16 12:52:17 +01:00
|
|
|
var = .1*p.fracs[:input_dim]
|
2015-09-18 16:21:31 +01:00
|
|
|
elif init in 'empirical_samples':
|
|
|
|
|
from ..util.linalg import tdot
|
|
|
|
|
from ..util import diag
|
|
|
|
|
YYT = tdot(Y)
|
|
|
|
|
diag.add(YYT, 1e-6)
|
|
|
|
|
EMP = np.asfortranarray(np.random.multivariate_normal(np.zeros(Y.shape[0]), YYT, min(input_dim, Y.shape[1])).T)
|
|
|
|
|
Xr[:EMP.shape[0], :EMP.shape[1]] = EMP
|
|
|
|
|
var = np.random.uniform(0.5, 1.5, input_dim)
|
2014-02-24 14:56:28 +00:00
|
|
|
else:
|
2014-03-24 13:32:18 +00:00
|
|
|
var = Xr.var(0)
|
2014-07-07 16:00:45 -07:00
|
|
|
|
2014-05-13 08:33:26 +01:00
|
|
|
Xr -= Xr.mean(0)
|
2014-07-07 16:00:45 -07:00
|
|
|
Xr /= Xr.std(0)
|
|
|
|
|
|
2014-05-15 12:17:21 +01:00
|
|
|
return Xr, var/var.max()
|