Beispiel #1
0
	def test_covariance(self):
		gc = GaussianCovariance()

		x = np.array([[x1,x2] for x1 in range(10) for x2 in range(10)])  #np.atleast_2d(np.linspace(0, 10, 30)).T
		theta = np.log(np.array([2,0.01,0.04,0.04]))

		cov = gc.cov_matrix(x,theta)
		cov_super = Covariance.cov_matrix(gc,x,theta)
		self.assertLessEqual(np.abs((cov-cov_super-0.01*np.eye(100))).sum(),1e-10)

		dcov = gc._d_cov_matrix_d_theta(x,theta,2)
		dcov_super = Covariance._d_cov_matrix_d_theta(gc,x,theta,2)

		self.assertLessEqual(np.abs((dcov-dcov_super)).sum(),1e-10)

		#np.count_nonzero(cov-cov_super)
		t = GaussianProcess.get_realisation(x, GaussianCovariance(), theta)
		#t = y + 0.1 * np.random.randn(len(x)) #-> vt = 0.01

		dndt = gc._d_nll_d_theta(x,t,theta)
		print(dndt)
		dndt_est = []
		for j in range(len(theta)):
			d = np.zeros(len(theta))
			d[j] = 1e-5
			#d = np.log(1+d/np.exp(theta)) # Addition of log: log(x+y) = log(x) + log(1+y/x)
			dndt_est.append( (gc._negativeloglikelihood(x,t,theta+d) - gc._negativeloglikelihood(x,t,theta-d))/2e-5 )


		dndt_est = np.array(dndt_est)
		print(dndt_est)
		print(np.abs(dndt_est - dndt))
		self.assertTrue((np.abs(dndt_est - dndt) < 5e-1).all())
Beispiel #2
0
	def test_spgp_nll(self):


		x = np.array([[x1,x2] for x1 in range(10) for x2 in range(10)])  #np.atleast_2d(np.linspace(0, 10, 30)).T
		w = np.array([0.04,0.04])
		v = 2
		vt = 0#.01
		theta = np.zeros(2+len(w))

		theta[0] = np.log(v)
		theta[1] = np.log(vt)
		theta[2:2+len(w)] = np.log(w)
		y = GaussianProcess.get_realisation(x, GaussianCovariance(), theta)
		t = y + 0.1 * np.random.randn(len(x)) #-> vt = 0.01


		spgpcov = SPGPCovariance(10)
		gc = GaussianCovariance()
		theta = spgpcov.get_theta(x,t)
		theta_gc = gc.get_theta(x,t)

		start = time.time()
		res_g = gc._negativeloglikelihood(x,t,theta_gc)
		print("Gaussian NLL: ",res_g)
		print("Time: ",time.time()-start)

		start = time.time()
		res = Covariance._negativeloglikelihood(spgpcov,x,t,theta)
		print("My NLL: ",res)
		print("Time: ",time.time()-start)

		res_s =  spgpcov._negativeloglikelihood(x,t,theta)
		print("Snelson NLL: ", res_s)
		print("Time: ", time.time()-start)


		self.assertAlmostEqual(res,res_s,delta=2e-1)