mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-18 13:55:14 +02:00
Merge branch 'devel' of github.com:SheffieldML/GPy into devel
This commit is contained in:
commit
3cc9547cab
2 changed files with 21 additions and 8 deletions
|
|
@ -113,11 +113,11 @@ class EP(likelihood):
|
||||||
#Site parameters update
|
#Site parameters update
|
||||||
Delta_tau = self.delta/self.eta*(1./sigma2_hat[i] - 1./Sigma[i,i])
|
Delta_tau = self.delta/self.eta*(1./sigma2_hat[i] - 1./Sigma[i,i])
|
||||||
Delta_v = self.delta/self.eta*(mu_hat[i]/sigma2_hat[i] - mu[i]/Sigma[i,i])
|
Delta_v = self.delta/self.eta*(mu_hat[i]/sigma2_hat[i] - mu[i]/Sigma[i,i])
|
||||||
self.tau_tilde[i] = self.tau_tilde[i] + Delta_tau
|
self.tau_tilde[i] += Delta_tau
|
||||||
self.v_tilde[i] = self.v_tilde[i] + Delta_v
|
self.v_tilde[i] += Delta_v
|
||||||
#Posterior distribution parameters update
|
#Posterior distribution parameters update
|
||||||
si=Sigma[:,i].reshape(self.N,1)
|
si=Sigma[:,i:i+1]
|
||||||
Sigma = Sigma - Delta_tau/(1.+ Delta_tau*Sigma[i,i])*np.dot(si,si.T)
|
Sigma -= Delta_tau/(1.+ Delta_tau*Sigma[i,i])*np.dot(si,si.T)#DSYR
|
||||||
mu = np.dot(Sigma,self.v_tilde)
|
mu = np.dot(Sigma,self.v_tilde)
|
||||||
self.iterations += 1
|
self.iterations += 1
|
||||||
#Sigma recomptutation with Cholesky decompositon
|
#Sigma recomptutation with Cholesky decompositon
|
||||||
|
|
|
||||||
|
|
@ -236,6 +236,18 @@ def tdot(*args, **kwargs):
|
||||||
else:
|
else:
|
||||||
return tdot_numpy(*args,**kwargs)
|
return tdot_numpy(*args,**kwargs)
|
||||||
|
|
||||||
|
def DSYR(A,x,alpha=1.):
|
||||||
|
N = c_int(A.shape[0])
|
||||||
|
LDA = c_int(A.shape[0])
|
||||||
|
UPLO = c_char('l')
|
||||||
|
ALPHA = c_double(alpha)
|
||||||
|
A_ = A.ctypes.data_as(ctypes.c_void_p)
|
||||||
|
x_ = x.ctypes.data_as(ctypes.c_void_p)
|
||||||
|
INCX = c_int(1)
|
||||||
|
_blaslib.dsyr_(byref(UPLO), byref(N), byref(ALPHA),
|
||||||
|
x_, byref(INCX), A_, byref(LDA))
|
||||||
|
symmetrify(A,upper=True)
|
||||||
|
|
||||||
def symmetrify(A,upper=False):
|
def symmetrify(A,upper=False):
|
||||||
"""
|
"""
|
||||||
Take the square matrix A and make it symmetrical by copting elements from the lower half to the upper
|
Take the square matrix A and make it symmetrical by copting elements from the lower half to the upper
|
||||||
|
|
@ -259,19 +271,20 @@ def symmetrify(A,upper=False):
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
if A.flags['C_CONTIGUOUS'] and upper:
|
if A.flags['C_CONTIGUOUS'] and upper:
|
||||||
weave.inline(f_contig_code,['A','N'])
|
weave.inline(f_contig_code,['A','N'], extra_compile_args=['-O3'])
|
||||||
elif A.flags['C_CONTIGUOUS'] and not upper:
|
elif A.flags['C_CONTIGUOUS'] and not upper:
|
||||||
weave.inline(c_contig_code,['A','N'])
|
weave.inline(c_contig_code,['A','N'], extra_compile_args=['-O3'])
|
||||||
elif A.flags['F_CONTIGUOUS'] and upper:
|
elif A.flags['F_CONTIGUOUS'] and upper:
|
||||||
weave.inline(c_contig_code,['A','N'])
|
weave.inline(c_contig_code,['A','N'], extra_compile_args=['-O3'])
|
||||||
elif A.flags['F_CONTIGUOUS'] and not upper:
|
elif A.flags['F_CONTIGUOUS'] and not upper:
|
||||||
weave.inline(f_contig_code,['A','N'])
|
weave.inline(f_contig_code,['A','N'], extra_compile_args=['-O3'])
|
||||||
else:
|
else:
|
||||||
tmp = np.tril(A)
|
tmp = np.tril(A)
|
||||||
A[:] = 0.0
|
A[:] = 0.0
|
||||||
A += tmp
|
A += tmp
|
||||||
A += np.tril(tmp,-1).T
|
A += np.tril(tmp,-1).T
|
||||||
|
|
||||||
|
|
||||||
def symmetrify_murray(A):
|
def symmetrify_murray(A):
|
||||||
A += A.T
|
A += A.T
|
||||||
nn = A.shape[0]
|
nn = A.shape[0]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue