Пример #1
0
def gen_InvertibleLinearTransform(shape):
    assert len(shape) == 1
    dim = shape[0]
    invertible = False
    while not invertible:
        mat = randn(dim, dim)
        invertible = (logDet(mat) > float('-inf'))
    return xf.LinearTransform(mat).withTag(randTag())
Пример #2
0
def gen_InvertibleLinearTransform(shape):
    assert len(shape) == 1
    dim = shape[0]
    invertible = False
    while not invertible:
        mat = randn(dim, dim)
        invertible = (logDet(mat) > float('-inf'))
    return xf.LinearTransform(mat).withTag(randTag())
Пример #3
0
 def test_logDet(self, numPoints=200):
     for pointIndex in range(numPoints):
         n = randint(0, 20)
         if randint(0, 10) == 0:
             A = np.zeros([n, n])
         else:
             A = randn(n, n)
         trueDet = la.det(A) if n > 0 else 1.0
         assert_allclose(np.exp(mathhelp.logDet(A)), abs(trueDet))
Пример #4
0
def computeLogJac(transform, x):
    shapeOut = np.shape(x)
    deriv = transform.deriv(x)
    if len(shapeOut) == 0:
        return math.log(abs(deriv))
    elif len(shapeOut) == 1:
        return logDet(deriv)
    else:
        raise RuntimeError('log-Jacobian computation not implemented for output of rank >= 2')
Пример #5
0
 def test_logDet(self, numPoints = 200):
     for pointIndex in range(numPoints):
         n = randint(0, 20)
         if randint(0, 10) == 0:
             A = np.zeros([n, n])
         else:
             A = randn(n, n)
         trueDet = la.det(A) if n > 0 else 1.0
         assert_allclose(np.exp(mathhelp.logDet(A)), abs(trueDet))
Пример #6
0
def computeLogJac(transform, x):
    shapeOut = np.shape(x)
    deriv = transform.deriv(x)
    if len(shapeOut) == 0:
        return math.log(abs(deriv))
    elif len(shapeOut) == 1:
        return logDet(deriv)
    else:
        raise RuntimeError(
            'log-Jacobian computation not implemented for output of rank >= 2')
Пример #7
0
 def logDetMat(self):
     return logDet(self.mat)