# tf.keras.losses.log_cosh

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/keras-team/keras/tree/v2.14.0/keras/losses.py#L2113-L2156) |

Logarithm of the hyperbolic cosine of the prediction error.

#### View aliases


**Main aliases**

[`tf.keras.losses.logcosh`](https://www.tensorflow.org/api_docs/python/tf/keras/losses/log_cosh), [`tf.keras.metrics.log_cosh`](https://www.tensorflow.org/api_docs/python/tf/keras/losses/log_cosh), [`tf.keras.metrics.logcosh`](https://www.tensorflow.org/api_docs/python/tf/keras/losses/log_cosh), [`tf.losses.log_cosh`](https://www.tensorflow.org/api_docs/python/tf/keras/losses/log_cosh), [`tf.losses.logcosh`](https://www.tensorflow.org/api_docs/python/tf/keras/losses/log_cosh), [`tf.metrics.log_cosh`](https://www.tensorflow.org/api_docs/python/tf/keras/losses/log_cosh), [`tf.metrics.logcosh`](https://www.tensorflow.org/api_docs/python/tf/keras/losses/log_cosh)

<br />

    tf.keras.losses.log_cosh(
        y_true, y_pred
    )

`log(cosh(x))` is approximately equal to `(x ** 2) / 2` for small `x` and
to `abs(x) - log(2)` for large `x`. This means that 'logcosh' works mostly
like the mean squared error, but will not be so strongly affected by the
occasional wildly incorrect prediction.

#### Standalone usage:

    y_true = np.random.random(size=(2, 3))
    y_pred = np.random.random(size=(2, 3))
    loss = tf.keras.losses.logcosh(y_true, y_pred)
    assert loss.shape == (2,)
    x = y_pred - y_true
    assert np.allclose(
        loss.numpy(),
        np.mean(x + np.log(np.exp(-2. * x) + 1.) - tf.math.log(2.),
                axis=-1),
        atol=1e-5)

<br />

<br />

<br />

| ## Args ||
|---|---|
| `y_true` | Ground truth values. shape = `[batch_size, d0, .. dN]`. |
| `y_pred` | The predicted values. shape = `[batch_size, d0, .. dN]`. |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| Logcosh error values. shape = `[batch_size, d0, .. dN-1]`. ||

<br />