# tf.clip_by_global_norm

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.13.1/tensorflow/python/ops/clip_ops.py#L288-L379) |

Clips values of multiple tensors by the ratio of the sum of their norms.

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.clip_by_global_norm`](https://www.tensorflow.org/api_docs/python/tf/clip_by_global_norm)

<br />

    tf.clip_by_global_norm(
        t_list, clip_norm, use_norm=None, name=None
    )

Given a tuple or list of tensors `t_list`, and a clipping ratio `clip_norm`,
this operation returns a list of clipped tensors `list_clipped`
and the global norm (`global_norm`) of all tensors in `t_list`. Optionally,
if you've already computed the global norm for `t_list`, you can specify
the global norm with `use_norm`.

To perform the clipping, the values `t_list[i]` are set to:

    t_list[i] * clip_norm / max(global_norm, clip_norm)

where:

    global_norm = sqrt(sum([l2norm(t)**2 for t in t_list]))

If `clip_norm > global_norm` then the entries in `t_list` remain as they are,
otherwise they're all shrunk by the global ratio.

If `global_norm == infinity` then the entries in `t_list` are all set to `NaN`
to signal that an error occurred.

Any of the entries of `t_list` that are of type `None` are ignored.

This is the correct way to perform gradient clipping (Pascanu et al., 2012).

However, it is slower than `clip_by_norm()` because all the parameters must be
ready before the clipping operation can be performed.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `t_list` | A tuple or list of mixed `Tensors`, `IndexedSlices`, or None. |
| `clip_norm` | A 0-D (scalar) `Tensor` \> 0. The clipping ratio. |
| `use_norm` | A 0-D (scalar) `Tensor` of type `float` (optional). The global norm to use. If not provided, `global_norm()` is used to compute the norm. |
| `name` | A name for the operation (optional). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| `list_clipped` | A list of `Tensors` of the same type as `list_t`. |
| `global_norm` | A 0-D (scalar) `Tensor` representing the global norm. |

<br />

<br />

<br />

<br />

| ## Raises ||
|---|---|
| `TypeError` | If `t_list` is not a sequence. |

<br />

<br />

<br />

<br />

| ## References ||
|---|---|
| On the difficulty of training Recurrent Neural Networks: [Pascanu et al., 2012](http://proceedings.mlr.press/v28/pascanu13.html) ([pdf](http://proceedings.mlr.press/v28/pascanu13.pdf)) ||

<br />