View source on GitHub
|
Compute exponentially weighted moving {mean,variance} of a streaming value.
tf.contrib.distributions.moving_mean_variance(
value, decay, collections=None, name=None
)
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 [Finch (2009; Eq. 143)][1].
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.
|
References
[1]: Tony Finch. Incremental calculation of weighted mean and variance. Technical Report, 2009. http://people.ds.cam.ac.uk/fanf2/hermes/doc/antiforgery/stats.pdf
View source on GitHub