Update parameters by performing a single sgmcmc step with dynamics as defined in the sgmcmc object. This can be used to perform sgmcmc steps inside a loop as in standard TensorFlow optimization procedures. This is useful when high dimensional chains cannot fit into memory.

sgmcmcStep(sgmcmc, sess)

Arguments

sgmcmc

a stochastic gradient MCMC object returned by *Setup such as sgldSetup, sgldcvSetup etc.

sess

a TensorFlow session created using initSess

Examples

# NOT RUN {
# Simulate from a Normal Distribution, unknown location and known scale with uninformative prior
# Run sgmcmc step by step and calculate estimate of location on the fly to reduce storage
dataset = list("x" = rnorm(1000))
params = list("theta" = 0)
logLik = function(params, dataset) {
    distn = tf$distributions$Normal(params$theta, 1)
    return(tf$reduce_sum(distn$log_prob(dataset$x)))
}
stepsize = list("theta" = 1e-4)
sgld = sgldSetup(logLik, dataset, params, stepsize)
nIters = 10^4L
# Initialize location estimate
locEstimate = 0
# Initialise TensorFlow session
sess = initSess(sgld)
for ( i in 1:nIters ) {
    sgmcmcStep(sgld, sess)
    locEstimate = locEstimate + 1 / nIters * getParams(sgld, sess)$theta
}
# For more examples see vignettes
# }