# tf_agents.bandits.metrics.tf_metrics.DistanceFromGreedyMetric

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/agents/blob/v0.19.0/tf_agents/bandits/metrics/tf_metrics.py#L181-L234) |

Difference between the estimated reward of the chosen and the best action.

Inherits From: [`TFStepMetric`](https://www.tensorflow.org/agents/api_docs/python/tf_agents/metrics/tf_metric/TFStepMetric)

    tf_agents.bandits.metrics.tf_metrics.DistanceFromGreedyMetric(
        estimated_reward_fn: Callable[[https://www.tensorflow.org/agents/api_docs/python/tf_agents/typing/types/Tensor], https://www.tensorflow.org/agents/api_docs/python/tf_agents/typing/types/Tensor],
        name: Optional[Text] = 'DistanceFromGreedyMetric',
        dtype: float = tf.float32
    )

This metric measures how 'safely' the agent explores: it calculates the
difference between what the agent thinks it would have gotten had it chosen
the best looking action, vs the action it actually took. This metric is not
equivalent to the regret, because the regret is calculated as a distance from
optimality, while here everything calculated is based on the policy's
'belief'.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `estimated_reward_fn` | A function that takes the observation as input and computes the estimated rewards that the greedy policy uses. |
| `name` | (str) name of the metric |
| `dtype` | dtype of the metric value. |

<br />

## Methods

### `call`

[View source](https://github.com/tensorflow/agents/blob/v0.19.0/tf_agents/bandits/metrics/tf_metrics.py#L214-L231)

    call(
        trajectory
    )

Update the metric value.

<br />

<br />

<br />

| Args ||
|---|---|
| `trajectory` | A tf_agents.trajectory.Trajectory |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| The arguments, for easy chaining. ||

<br />

### `init_variables`

[View source](https://github.com/tensorflow/agents/blob/v0.19.0/tf_agents/metrics/tf_metric.py#L61-L75)

    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.)

<br />

<br />

<br />

| 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. ||

<br />

### `reset`

[View source](https://github.com/tensorflow/agents/blob/v0.19.0/tf_agents/metrics/tf_metric.py#L53-L55)

    reset()

Resets the values being tracked by the metric.

### `result`

[View source](https://github.com/tensorflow/agents/blob/v0.19.0/tf_agents/bandits/metrics/tf_metrics.py#L233-L234)

    result()

Computes and returns a final value for the metric.

### `tf_summaries`

[View source](https://github.com/tensorflow/agents/blob/v0.19.0/tf_agents/metrics/tf_metric.py#L94-L126)

    tf_summaries(
        train_step=None, step_metrics=()
    )

Generates summaries against train_step and all step_metrics.

<br />

<br />

<br />

| Args ||
|---|---|
| `train_step` | (Optional) Step counter for training iterations. If None, no metric is generated against the global step. |
| `step_metrics` | (Optional) Iterable of step metrics to generate summaries against. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| A list of summaries. ||

<br />

### `__call__`

[View source](https://github.com/tensorflow/agents/blob/v0.19.0/tf_agents/metrics/tf_metric.py#L82-L92)

    __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.

<br />

<br />

<br />

| Args ||
|---|---|
| `*args` | <br /> <br /> |
| `**kwargs` | A mini-batch of inputs to the Metric, passed on to `call()`. |

<br />