l2_loss#
- class braintools.metric.l2_loss(predictions, targets=None, axis=None, reduction='none')#
Calculate the L2 loss for a set of predictions.
The L2 loss is half the squared error:
\[\text{L2 loss} = \frac{1}{2} (y - \hat{y})^2\]- Parameters:
predictions (
Array|ndarray|bool|number|bool|int|float|complex|Quantity) – A vector of arbitrary shape[...].targets (
Array|ndarray|bool|number|bool|int|float|complex|Quantity|None) – A vector with the same shape aspredictions(shape equality is asserted; no broadcasting). If not provided then it is assumed to be a vector of zeros.axis (
int|tuple[int,...] |None) – Axis or axes along which to reduce whenreductionis'mean'or'sum'. If None, reduction (if any) is over all elements.reduction (
str) –Reduction operation to apply:
'none': return element-wise losses with the same shape aspredictions(backward-compatible default),'mean': return the mean of the losses,'sum': return the sum of the losses.
- Returns:
Element-wise squared differences scaled by
0.5whenreduction='none'; otherwise the reduced value.- Return type:
Array|ndarray|bool|number|bool|int|float|complex|Quantity
Notes
The
0.5factor is standard in “Pattern Recognition and Machine Learning” by Bishop, but not in “The Elements of Statistical Learning” by Tibshirani.For
brainunit.Quantityinputs the result carries squared units (e.g.mVinputs produce amV ** 2result), since the error is squared element-wise.References
Examples
>>> import jax.numpy as jnp >>> import braintools >>> predictions = jnp.array([1.0, 2.0, 3.0]) >>> targets = jnp.array([1.5, 2.5, 2.0]) >>> braintools.metric.l2_loss(predictions, targets) Array([0.125, 0.125, 0.5 ], dtype=float32) >>> braintools.metric.l2_loss(predictions, targets, reduction='mean') Array(0.25, dtype=float32)