tf_agents.metrics.py_metrics.EnvironmentSteps

View source on GitHub

Counts the number of steps taken in the environment.

Inherits From: PyStepMetric

name Returns the name of this module as passed or determined in the ctor.

name_scope Returns a tf.name_scope instance for this class.
prefix Prefix for the metric.
submodules Sequence of all sub-modules.

Submodules are modules which are properties of this module, or found as properties of modules which are properties of this module (and so on).

a = tf.Module()
b = tf.Module()
c = tf.Module()
a.b = b
b.c = c
list(a.submodules) == [b, c]
True
list(b.submodules) == [c]
True
list(c.submodules) == []
True

summary_op TF summary op for this metric.
summary_placeholder TF placeholder to be used for the result of this metric.
trainable_variables Sequence of trainable variables owned by this module and its submodules.

variables Sequence of variables owned by this module and its submodules.

Methods

aggregate

View source

Aggregates a list of metrics.

The default behaviour is to return the average of the metrics.

Args
metrics a list of metrics, of the same class.

Returns
The result of aggregating this metric.

call

View source

Processes a trajectory to update the metric.

Args
trajectory A trajectory.Trajectory.

log

View source

reset

View source

Resets internal stat gathering variables used to compute the metric.

result

View source

Evaluates the current value of the metric.

tf_summaries

View source

Build TF summary op and placeholder for this metric.

To execute the op, call py_metric.run_summaries.

Args
train_step Step counter for training iterations. If None, no metric is generated against the global step.
step_metrics Step values to plot as X axis in addition to global_step.

Returns
The summary op.

Raises
RuntimeError If this method has already been called (it can only be called once).
ValueError If any item in step_metrics is not of type PyMetric or tf_metric.TFStepMetric.

with_name_scope

Decorator to automatically enter the module name scope.

class MyModule(tf.Module):
  @tf.Module.with_name_scope
  def __call__(self, x):
    if not hasattr(self, 'w'):
      self.w = tf.Variable(tf.random.normal([x.shape[1], 3]))
    return tf.matmul(x, self.w)

Using the above module would produce tf.Variables and tf.Tensors whose names included the module name:

mod = MyModule()
mod(tf.ones([1, 2]))
<tf.Tensor: shape=(1, 3), dtype=float32, numpy=..., dtype=float32)>
mod.w
<tf.Variable 'my_module/Variable:0' shape=(2, 3) dtype=float32,
numpy=..., dtype=float32)>

Args
method The method to wrap.

Returns
The original method wrapped such that it enters the module's name scope.

__call__

View source

Method to update the metric contents.

To change the behavior of this function, override the call method.

Different subclasses might use this differently. For instance, the PyStepMetric takes in a trajectory, while the CounterMetric takes no parameters.

Args
*args See call method of subclass for specific arguments.