def test_safe_chol(self): with self.test_session(): B=np.array([[1.0,1.1,1.2,1.3]]).T;B1=tf.constant(B,shape=[4,1],dtype=tf.float32) A=h.squared_diff(B1,B1); A=A+0.2*np.eye(4) x=h.safe_chol(A,B1) self.assertAllClose(tf.matmul(A,x).eval(),B1.eval(),atol=1e-1)
def predict2(): # predicitions cov=h.Mul(K_mm_2,tf.matrix_inverse(K_mm_2+K_mnnm_2/tf.square(sigma_2)),K_mm_2) cov_chol=tf.cholesky(cov) mu=h.Mul(K_mm_2,tf.cholesky_solve(cov_chol,K_mn_2),Ytr)/tf.square(sigma_2) mean=h.Mul(K_nm_2,tf.matrix_solve(K_mm_1,mu)) variance=K_nn_2-h.Mul(K_nm_2,h.safe_chol(K_mm_2,tf.transpose(K_nm_2))) var_terms=2*tf.sqrt(tf.reshape(tf.diag_part(variance)+tf.square(sigma_2),[N,1])) return mean, var_terms
def predict(K_mn,sigma,K_mm,K_nn): # predicitions K_nm=tf.transpose(K_mn) Sig_Inv=1e-1*np.eye(M)+K_mm+K_mnnm_2/tf.square(sigma) mu_post=h.Mul(tf.matrix_solve(Sig_Inv,K_mn),Ytr)/tf.square(sigma) mean=h.Mul(K_nm,mu_post) variance=K_nn-h.Mul(K_nm,h.safe_chol(K_mm,K_mn))+h.Mul(K_nm,tf.matrix_solve(Sig_Inv,K_mn)) var_terms=2*tf.sqrt(tf.reshape(tf.diag_part(variance)+tf.square(sigma),[N,1])) return mean, var_terms
sigma = tf.Variable(tf.ones([1, 1]), dtype=tf.float32, name='sigma') noise = tf.Variable(tf.ones([1, 1]), dtype=tf.float32, name='sigma') len_sc = tf.Variable(tf.ones([1, 1]), dtype=tf.float32, name='len_sc') s.run(tf.initialize_all_variables()) print(s.run(X_m)) X_j_m = h.jitter(X_m) K_nm = h.tf_SE_K(Xtr, X_m, len_sc, noise) K_mm = h.tf_SE_K(X_m, X_m, len_sc, noise) + h.tol * np.eye(M, M) K_nn = h.tf_SE_K(Xtr, Xtr, len_sc, noise) K_mn = h.tf.transpose(K_nm) Sig_Inv = K_mm + h.Mul(K_mn, K_nm) / (tf.square(sigma) + h.tol) mu_post = h.Mul(h.safe_chol(Sig_Inv, K_mn), Ytr) / (tf.square(sigma) + h.tol) mean = h.Mul(K_nm, mu_post) variance = K_nn - h.Mul(K_nm, h.safe_chol(K_mm, K_mn)) + h.Mul( K_nm, h.safe_chol(Sig_Inv, K_mn)) var_terms = 2 * tf.sqrt( tf.reshape(tf.diag_part(variance) + tf.square(sigma), [N, 1])) F_v = h.F_bound_v1(Ytr, K_mm, K_nm, K_nn, sigma) tf.scalar_summary("F_v", F_v) opt = tf.train.AdamOptimizer(0.5) train = opt.minimize(-1 * F_v) init = tf.initialize_all_variables() s.run(init) plt.ion()
s.run(tf.initialize_all_variables()) print(s.run(X_m)) X_j_m=h.jitter(X_m) K_nm=h.tf_SE_K(Xtr,X_m,len_sc,noise) K_mm=h.tf_SE_K(X_m,X_m,len_sc,noise)+h.tol*np.eye(M,M) K_nn=h.tf_SE_K(Xtr,Xtr,len_sc,noise) K_mn=h.tf.transpose(K_nm) Sig_Inv=K_mm+h.Mul(K_mn,K_nm)/(tf.square(sigma)+h.tol) mu_post=h.Mul(h.safe_chol(Sig_Inv,K_mn),Ytr)/(tf.square(sigma)+h.tol) mean=h.Mul(K_nm,mu_post) variance=K_nn-h.Mul(K_nm,h.safe_chol(K_mm,K_mn))+h.Mul(K_nm,h.safe_chol(Sig_Inv,K_mn)) var_terms=2*tf.sqrt(tf.reshape(tf.diag_part(variance)+tf.square(sigma),[N,1])) F_v=h.F_bound_v1(Ytr,K_mm,K_nm,K_nn,sigma) tf.scalar_summary("F_v", F_v) opt = tf.train.AdamOptimizer(0.5) train=opt.minimize(-1*F_v) init=tf.initialize_all_variables() s.run(init) plt.ion() plt.axis([0, 10, -5, 5])