tfp.experimental.mcmc.Reducer

Base class for all MCMC Reducers.

This class defines the minimal requirements to implement a Markov chain Monte Carlo (MCMC) reducer. A reducer updates a streaming computation by reducing new samples to a summary statistic. Reducers can be defined to return "side information" if desired, but they do not remember state. Hence, reducers should be seen as objects that hold metadata (i.e. shape and dtype of incoming samples) and all reducer method calls must be coupled with a state object, as first returned by the initialize method.

Methods

finalize

View source

Finalizes target statistic calculation from the final_state.

This is an identity function of the final_state by default. Subclasses can override it for streaming calculations whose running state is not the same as the desired result.

Args
final_reducer_state A tuple, namedtuple or list of Tensors representing the final state of the reduced statistic.

Returns
statistic An estimate of the target statistic

initialize

View source

Initializes a reducer state corresponding to the stream of no samples.

This is an abstract method and must be overridden by subclasses.

Args
initial_chain_state Tensor or Python list of Tensors representing the current state(s) of the Markov chain(s). This is to be used for any needed (shape, dtype, etc.) information, but should not be considered part of the stream being reduced.
initial_inner_kernel_results A (possibly nested) tuple, namedtuple or list of Tensors representing internal calculations made in a related TransitionKernel. This allows for introspection of deeper layers of TransitionKernels that have bearing to the nature of the initial reducer state.

Returns
init_reducer_state tuple, namedtuple or list of Tensors representing the stream of no samples.

one_step

View source

Takes one step of the Reducer.

This is an abstract method and must be overridden by subclasses.

Args
new_chain_state Incoming chain state(s) with shape and dtype compatible with the initial_chain_state with which the current_reducer_state was produced by initialize.
current_reducer_state A tuple, namedtuple or list of Tensors representing the current state of reduced statistics.
previous_kernel_results A (possibly nested) tuple, namedtuple or list of Tensors representing internal calculations made in a related TransitionKernel. This allows for introspection of deeper layers of TransitionKernels that have bearing to the nature of the updated reducer state (i.e. updating based on a value in the kernel results of some TransitionKernel).

Returns
new_state The new reducer state after updates. This has the same type and structure as current_reducer_state.