tf.compat.v1.metrics.mean

Computes the (weighted) mean of the given values.

Migrate to TF2

tf.compat.v1.metrics.mean is not compatible with eager execution or tf.function. Please use tf.keras.metrics.Mean instead for TF2 migration. After instantiating a tf.keras.metrics.Mean object, you can first call the update_state() method to record the new values, and then call the result() method to get the mean eagerly. You can also attach it to a Keras model with the add_metric method. Please refer to the migration guide for more details.

Structural Mapping to TF2

Before:

mean, update_op = tf.compat.v1.metrics.mean(
  values=values,
  weights=weights,
  metrics_collections=metrics_collections,
  update_collections=update_collections,
  name=name)

After:

 m = tf.keras.metrics.Mean(
   name=name)

 m.update_state(
   values=values,
   sample_weight=weights)

 mean = m.result()

How to Map Arguments

TF1 Arg Name TF2 Arg Name Note
values values In update_state() method
weights sample_weight In update_state() method
metrics_collections Not supported Metrics should be tracked explicitly or with Keras APIs, for example, add_metric, instead of via collections
updates_collections Not supported -
name name In constructor

Before & After Usage Example

Before:

g = tf.Graph()
with g.as_default():
  values = [1, 2, 3]
  mean, update_op = tf.compat.v1.metrics.mean(values)
  global_init = tf.compat.v1.global_variables_initializer()
  local_init = tf.compat.v1.local_variables_initializer()
sess = tf.compat.v1.Session(graph=g)
sess.run([global_init, local_init])
sess.run(update_op)
sess.run(mean)
2.0

After:

m = tf.keras.metrics.Mean()
m.update_state([1, 2, 3])
m.result().numpy()
2.0
# Used within Keras model
model.add_metric(tf.keras.metrics.Mean()(values))

Description

The mean function creates two local variables, total and count that are used to compute the average of values. This average is ultimately returned as mean which is an idempotent operation that simply divides total by count.

For estimation of the metric over a stream of data, the function creates an update_op operation that updates these variables and returns the mean. update_op increments total with the reduced sum of the product of values and weights, and it increments count with the reduced sum of weights.

If weights is None, weights default to 1. Use weights of 0 to mask values.

values A Tensor of arbitrary dimensions.
weights Optional Tensor whose rank is either 0, or the same rank as values, and must be broadcastable to values (i.e., all dimensions must be either 1, or the same as the corresponding values dimension).
metrics_collections An optional list of collections that mean should be added to.
updates_collections An optional list of collections that update_op should be added to.
name An optional variable_scope name.

mean A Tensor representing the current mean, the value of total divided by count.
update_op An operation that increments the total and count variables appropriately and whose value matches mean_value.

ValueError If weights is not None and its shape doesn't match values, or if either metrics_collections or updates_collections are not a list or tuple.
RuntimeError If eager execution is enabled.