tf.contrib.eager.metrics.Metric

Class Metric

Inherits From: CheckpointableBase

Defined in tensorflow/contrib/eager/python/metrics_impl.py.

A metric holds state for aggregating statistics over an evaluation run.

Example use with eager execution:

m = SomeMetric(...)
for input in ...:
  m(input)
print(m.result())

Example use with graph execution:

m = SomeMetric(...)
inputs = ... # Some tensors to compute the metric on.
m_update = m(inputs)
# Variables defined in first call, so get the initialization op afterwards.
m_init = m.init_variables()  # or tf.global_variables_initializer()
m_result = m.result()
with tf.Session() as sess:
  sess.run(m_init)
  for input in ...:
    sess.run(m_update)
  print(sess.run(m_result))

Example use with graph execution with placeholders and feed_dict:

m = SomeMetric(...)
m_placeholder = tf.placeholder(...)
m_update = m(m_placeholder)
# Variables defined in first call, so get the initialization op afterwards.
m_init = m.init_variables()  # or tf.global_variables_initializer()
m_result = m.result()
with tf.Session() as sess:
  sess.run(m_init)
  for input in ...:
    sess.run(m_update, feed_dict={m_placeholder: input})
  print(sess.run(m_result))

Descendants will implement: * build(): All variables should be created in this method, by calling self.add_variable() as in: self.var = self.add_variable(...) build() will be called in the first invocation of __call__(), with the same arguments passed call(). * call(): Has all updates to variables, as in: self.var.assign_add(...) * result(): Computes and returns a final value for the metric from the variables in self.

Descendants may override aggregate(), but usually won't need to. It adds in the state from a list of metrics of the same type as self. (Default is to sum all the variables.) Note that users should not call aggregate(), it is for use by TensorFlow infrastructure.

__init__

__init__(
    name=None,
    use_global_variables=False
)

Properties

name

variables

Methods

__call__

__call__(
    *args,
    **kwargs
)

Returns op to execute to update this metric for these inputs.

Returns None if eager execution is enabled. Returns a graph-mode function if graph execution is enabled.

Args:

  • *args: * **kwargs: A mini-batch of inputs to the Metric, passed on to call().

add_variable

add_variable(
    name,
    shape=None,
    dtype=None,
    initializer=None
)

Only for use by descendants of Metric.

aggregate

aggregate(metrics)

Adds in the state from a list of metrics.

Default implementation sums all the metric variables.

Args:

  • metrics: A list of metrics with the same type as self.

Raises:

  • ValueError: If metrics contains invalid data.

build

build(
    *args,
    **kwargs
)

Method to create variables.

Called by __call__() before call() for the first time.

Args:

  • *args: * **kwargs: The arguments to the first invocation of __call__(). build() may use the shape and/or dtype of these arguments when deciding how to create variables.

call

call(
    *args,
    **kwargs
)

Accumulates statistics for the metric. Users should use call instead.

Args:

  • *args: * **kwargs: A mini-batch of inputs to the Metric, as passed to __call__().

init_variables

init_variables()

Initializes this Metric's variables.

Should be called after variables are created in the first execution of __call__(). If using graph execution, the return value should be run() in a session before running the op returned by __call__(). (See example above.)

Returns:

If using graph execution, this returns an op to perform the initialization. Under eager execution, the variables are reset to their initial values as a side effect and this function returns None.

result

result()

Computes and returns a final value for the metric.

value

value()

In graph mode returns the result Tensor while in eager the callable.