tf.contrib.distributions.moving_mean_variance

tf.contrib.distributions.moving_mean_variance(
    value,
    decay,
    collections=None,
    name=None
)

Defined in tensorflow/contrib/distributions/python/ops/moving_stats.py.

Compute exponentially weighted moving {mean,variance} of a streaming value.

The exponentially-weighting moving mean_var and variance_var are updated by value according to the following recurrence:

variance_var = decay * (variance_var + (1-decay) * (value - mean_var)**2)
mean_var     = decay * mean_var + (1 - decay) * value

For derivation justification, see equation 143 of: T. Finch, Feb 2009. "Incremental calculation of weighted mean and variance". http://people.ds.cam.ac.uk/fanf2/hermes/doc/antiforgery/stats.pdf

Unlike assign_moving_mean_variance, this function handles variable creation.

Args:

  • value: float-like Tensor. Same shape as mean_var and variance_var.
  • decay: A float-like Tensor. The moving mean decay. Typically close to 1., e.g., 0.999.
  • collections: Python list of graph-collections keys to which the internal variables mean_var and variance_var are added. Default value is [GraphKeys.GLOBAL_VARIABLES].
  • name: Optional name of the returned operation.

Returns:

  • mean_var: Variable representing the value-updated exponentially weighted moving mean.
  • variance_var: Variable representing the value-updated exponentially weighted moving variance.

Raises:

  • TypeError: if value_var does not have float type dtype.
  • TypeError: if value, decay have different base_dtype.