示例#1
0
    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()))
示例#2
0
    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.)
示例#3
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())