예제 #1
0
def checkTransform(transform, shapeIn, invertible, hasDeriv, hasParams, is1D, eps, its, checkAdditional = None):
    assert transform.tag is not None
    transformEvaled = xf.eval_local(repr(transform))
    assert transformEvaled.tag == transform.tag
    assert repr(transform) == repr(transformEvaled)
    if hasParams:
        params = transform.params
        transformParsed = transform.parseAll(params)
        assert transformParsed.tag == transform.tag
        assert_allclose(transformParsed.params, params)
        assert_allclose(transformEvaled.params, params)
    for it in range(its):
        x = randn(*shapeIn)
        if checkAdditional is not None:
            checkAdditional(transform, x, eps)
        if True:
            assert_allclose(transformEvaled(x), transform(x))
        if hasParams:
            assert_allclose(transformParsed(x), transform(x))
        if hasDeriv:
            check_deriv(transform, x, eps)
        if is1D and hasDeriv:
            check_derivDeriv(transform, x, eps)
        if hasParams:
            check_derivParams(transform, x, eps)
        if hasDeriv and hasParams and is1D:
            check_derivParamsDeriv(transform, x, eps)
        if invertible and hasDeriv:
            check_logJac(transform, x)
        if invertible and hasDeriv:
            check_logJacDeriv(transform, x, eps)
        if invertible and hasDeriv and hasParams:
            check_logJacDerivParams(transform, x, eps)
        if invertible:
            check_inv(transform, x, randn(*shapeIn))
예제 #2
0
def checkDiscreteTransform(transform, domain, codomain, its,
                           checkAdditional = None):
    assert transform.tag is not None
    transformEvaled = xf.eval_local(repr(transform))
    assert transformEvaled.tag == transform.tag
    assert repr(transform) == repr(transformEvaled)
    for it in range(its):
        x = random.choice(domain)
        if checkAdditional is not None:
            checkAdditional(transform, x)
        assert transform(x) in codomain
        assert_allclose(transformEvaled(x), transform(x))
예제 #3
0
def checkDiscreteTransform(transform,
                           domain,
                           codomain,
                           its,
                           checkAdditional=None):
    assert transform.tag is not None
    transformEvaled = xf.eval_local(repr(transform))
    assert transformEvaled.tag == transform.tag
    assert repr(transform) == repr(transformEvaled)
    for it in range(its):
        x = random.choice(domain)
        if checkAdditional is not None:
            checkAdditional(transform, x)
        assert transform(x) in codomain
        assert_allclose(transformEvaled(x), transform(x))
예제 #4
0
def checkOutputTransform(outputTransform,
                         shapeInput,
                         shapeOutput,
                         hasParams,
                         eps,
                         its,
                         checkAdditional=None):
    outputTransformEvaled = xf.eval_local(repr(outputTransform))
    assert repr(outputTransform) == repr(outputTransformEvaled)
    if hasParams:
        params = outputTransform.params
        outputTransformParsed = outputTransform.parseAll(params)
        assert_allclose(outputTransformParsed.params, params)
        assert_allclose(outputTransformEvaled.params, params)
    for it in range(its):
        input = randn(*shapeInput)
        x = randn(*shapeOutput)
        transform = outputTransform.atInput(input)
        if checkAdditional is not None:
            checkAdditional(outputTransform, input, x, eps)
        if True:
            assert_allclose(outputTransform(input, x), transform(x))
        if True:
            assert_allclose(outputTransformEvaled(input, x),
                            outputTransform(input, x))
        if hasParams:
            assert_allclose(outputTransformParsed(input, x),
                            outputTransform(input, x))
        if True:
            check_deriv(transform, x, eps)
        if True:
            check_derivInput(outputTransform, input, x, eps)
        if hasParams:
            check_derivParams(transform, x, eps)
        if True:
            check_logJac(transform, x)
        if True:
            check_logJacDeriv(transform, x, eps)
        if True:
            check_logJacDerivInput(outputTransform, input, x, eps)
        if hasParams:
            check_logJacDerivParams(transform, x, eps)
        if True:
            check_inv(transform, x, randn(*shapeOutput))
예제 #5
0
def checkTransform(transform,
                   shapeIn,
                   invertible,
                   hasDeriv,
                   hasParams,
                   is1D,
                   eps,
                   its,
                   checkAdditional=None):
    assert transform.tag is not None
    transformEvaled = xf.eval_local(repr(transform))
    assert transformEvaled.tag == transform.tag
    assert repr(transform) == repr(transformEvaled)
    if hasParams:
        params = transform.params
        transformParsed = transform.parseAll(params)
        assert transformParsed.tag == transform.tag
        assert_allclose(transformParsed.params, params)
        assert_allclose(transformEvaled.params, params)
    for it in range(its):
        x = randn(*shapeIn)
        if checkAdditional is not None:
            checkAdditional(transform, x, eps)
        if True:
            assert_allclose(transformEvaled(x), transform(x))
        if hasParams:
            assert_allclose(transformParsed(x), transform(x))
        if hasDeriv:
            check_deriv(transform, x, eps)
        if is1D and hasDeriv:
            check_derivDeriv(transform, x, eps)
        if hasParams:
            check_derivParams(transform, x, eps)
        if hasDeriv and hasParams and is1D:
            check_derivParamsDeriv(transform, x, eps)
        if invertible and hasDeriv:
            check_logJac(transform, x)
        if invertible and hasDeriv:
            check_logJacDeriv(transform, x, eps)
        if invertible and hasDeriv and hasParams:
            check_logJacDerivParams(transform, x, eps)
        if invertible:
            check_inv(transform, x, randn(*shapeIn))
예제 #6
0
def checkOutputTransform(outputTransform, shapeInput, shapeOutput, hasParams, eps, its, checkAdditional = None):
    outputTransformEvaled = xf.eval_local(repr(outputTransform))
    assert repr(outputTransform) == repr(outputTransformEvaled)
    if hasParams:
        params = outputTransform.params
        outputTransformParsed = outputTransform.parseAll(params)
        assert_allclose(outputTransformParsed.params, params)
        assert_allclose(outputTransformEvaled.params, params)
    for it in range(its):
        input = randn(*shapeInput)
        x = randn(*shapeOutput)
        transform = outputTransform.atInput(input)
        if checkAdditional is not None:
            checkAdditional(outputTransform, input, x, eps)
        if True:
            assert_allclose(outputTransform(input, x), transform(x))
        if True:
            assert_allclose(outputTransformEvaled(input, x), outputTransform(input, x))
        if hasParams:
            assert_allclose(outputTransformParsed(input, x), outputTransform(input, x))
        if True:
            check_deriv(transform, x, eps)
        if True:
            check_derivInput(outputTransform, input, x, eps)
        if hasParams:
            check_derivParams(transform, x, eps)
        if True:
            check_logJac(transform, x)
        if True:
            check_logJacDeriv(transform, x, eps)
        if True:
            check_logJacDerivInput(outputTransform, input, x, eps)
        if hasParams:
            check_logJacDerivParams(transform, x, eps)
        if True:
            check_inv(transform, x, randn(*shapeOutput))