Exemple #1
0
	def test_affine_preconditioner(self):
		X = dot(randn(5, 5), randn(5, 1000)) + randn(5, 1)
		Y = dot(randn(2, 2), randn(2, 1000)) + dot(randn(2, 5), X)

		meanIn = randn(5, 1)
		meanOut = randn(2, 1)
		preIn = randn(5, 5)
		preOut = randn(2, 2)
		predictor = randn(2, 5)

		pre = AffinePreconditioner(
			meanIn,
			meanOut,
			preIn,
			preOut,
			predictor)

		# test inverse
		Xp, Yp = pre(X, Y)
		Xr, Yr = pre.inverse(Xp, Yp)

		# check that preconditioner does what it's expected to do
		self.assertEqual(pre.dim_in, X.shape[0])
		self.assertEqual(pre.dim_out, Y.shape[0])
		self.assertLess(max(abs(Xp - dot(preIn, X - meanIn))), 1e-10)
		self.assertLess(max(abs(Yp - dot(preOut, Y - meanOut - dot(predictor, Xp)))), 1e-10)

		# check that inverse works
		self.assertLess(max(abs(Xr - X)), 1e-10)
		self.assertLess(max(abs(Yr - Y)), 1e-10)

		# reference counts should not change
		Xrc = sys.getrefcount(X)
		Yrc = sys.getrefcount(Y)

		for i in range(10):
			pre(X, Y)

		self.assertEqual(sys.getrefcount(X), Xrc)
		self.assertEqual(sys.getrefcount(Y), Yrc)
Exemple #2
0
	def test_affine_preconditioner(self):
		X = dot(randn(5, 5), randn(5, 1000)) + randn(5, 1)
		Y = dot(randn(2, 2), randn(2, 1000)) + dot(randn(2, 5), X)

		meanIn = randn(5, 1)
		meanOut = randn(2, 1)
		preIn = randn(5, 5)
		preOut = randn(2, 2)
		predictor = randn(2, 5)

		pre = AffinePreconditioner(
			meanIn,
			meanOut,
			preIn,
			preOut,
			predictor)

		# test inverse
		Xp, Yp = pre(X, Y)
		Xr, Yr = pre.inverse(Xp, Yp)

		# check that preconditioner does what it's expected to do
		self.assertEqual(pre.dim_in, X.shape[0])
		self.assertEqual(pre.dim_out, Y.shape[0])
		self.assertLess(max(abs(Xp - dot(preIn, X - meanIn))), 1e-10)
		self.assertLess(max(abs(Yp - dot(preOut, Y - meanOut - dot(predictor, Xp)))), 1e-10)

		# check that inverse works
		self.assertLess(max(abs(Xr - X)), 1e-10)
		self.assertLess(max(abs(Yr - Y)), 1e-10)

		# reference counts should not change
		Xrc = sys.getrefcount(X)
		Yrc = sys.getrefcount(Y)

		for i in range(10):
			pre(X, Y)

		self.assertEqual(sys.getrefcount(X), Xrc)
		self.assertEqual(sys.getrefcount(Y), Yrc)