Esempio n. 1
0
def maybe_compile(arguments, expression, compile):
    "Either returns a raw Theano expression, or compiles it to a function."
    if not compile:
        return lambda new_args, arguments=arguments, expression=expression: conservative_clone(
            expression,
            replace=dict(zip(arguments, new_args)),
            reuse_shared=True)
    else:
        return th.function(arguments, expression, no_default_updates=True)
Esempio n. 2
0
def logp_difference(model, replacements, arguments=None, compile=True):
    """
    Returns a function that takes current values for some stochastic variables in the model,
    and new values for some stochastic variables in the model, and returns the new logp minus
    the current logp.
    """

    all_stochastics = stochastics(model)
    arguments = arguments or all_stochastics
    check_no_deterministics(arguments, 'logp_difference')
    
    differences = []
    for f in model['factors']:
        f_new = conservative_clone(f, replace=replacements, reuse_shared=True)
        differences.append(f_new - f)

    return maybe_compile(arguments + replacements.values(), logp_or_neginf(differences), compile)
Esempio n. 3
0
def logp_difference(model, replacements, arguments=None, compile=True):
    """
    Returns a function that takes current values for some stochastic variables in the model,
    and new values for some stochastic variables in the model, and returns the new logp minus
    the current logp.
    """

    all_stochastics = stochastics(model)
    arguments = arguments or all_stochastics
    check_no_deterministics(arguments, 'logp_difference')

    differences = []
    for f in model['factors']:
        f_new = conservative_clone(f, replace=replacements, reuse_shared=True)
        differences.append(f_new - f)

    return maybe_compile(arguments + replacements.values(),
                         logp_or_neginf(differences), compile)
Esempio n. 4
0
def maybe_compile(arguments, expression, compile):
    "Either returns a raw Theano expression, or compiles it to a function."
    if not compile:
        return lambda new_args, arguments=arguments, expression=expression: conservative_clone(expression, replace=dict(zip(arguments, new_args)), reuse_shared=True)
    else:
        return th.function(arguments, expression, no_default_updates=True)