def testShapeError(self): b = bijectors.FillTriangular(validate_args=True) x_shape_bad = tensor_shape.TensorShape([5, 4, 7]) with self.assertRaisesRegexp(ValueError, "is not a triangular number"): b.forward_event_shape(x_shape_bad) with self.assertRaisesOpError("is not a triangular number"): self.evaluate(b.forward_event_shape_tensor(x_shape_bad.as_list())) y_shape_bad = tensor_shape.TensorShape([5, 4, 3, 2]) with self.assertRaisesRegexp(ValueError, "Matrix must be square"): b.inverse_event_shape(y_shape_bad) with self.assertRaisesOpError("Matrix must be square"): self.evaluate(b.inverse_event_shape_tensor(y_shape_bad.as_list()))
def testBijector(self): x = np.float32(np.array([1., 2., 3.])) y = np.float32(np.array([[3., 0.], [2., 1.]])) b = bijectors.FillTriangular() y_ = self.evaluate(b.forward(x)) self.assertAllClose(y, y_) x_ = self.evaluate(b.inverse(y)) self.assertAllClose(x, x_) fldj = self.evaluate(b.forward_log_det_jacobian(x, event_ndims=1)) self.assertAllClose(fldj, 0.) ildj = self.evaluate(b.inverse_log_det_jacobian(y, event_ndims=2)) self.assertAllClose(ildj, 0.)
def testShape(self): x_shape = tensor_shape.TensorShape([5, 4, 6]) y_shape = tensor_shape.TensorShape([5, 4, 3, 3]) b = bijectors.FillTriangular(validate_args=True) x = array_ops.ones(shape=x_shape, dtype=dtypes.float32) y_ = b.forward(x) self.assertAllEqual(y_.shape.as_list(), y_shape.as_list()) x_ = b.inverse(y_) self.assertAllEqual(x_.shape.as_list(), x_shape.as_list()) y_shape_ = b.forward_event_shape(x_shape) self.assertAllEqual(y_shape_.as_list(), y_shape.as_list()) x_shape_ = b.inverse_event_shape(y_shape) self.assertAllEqual(x_shape_.as_list(), x_shape.as_list()) y_shape_tensor = self.evaluate( b.forward_event_shape_tensor(x_shape.as_list())) self.assertAllEqual(y_shape_tensor, y_shape.as_list()) x_shape_tensor = self.evaluate( b.inverse_event_shape_tensor(y_shape.as_list())) self.assertAllEqual(x_shape_tensor, x_shape.as_list())