# l1_loss#

class brainpy.losses.l1_loss(logits, targets, reduction='sum')[source]#

Creates a criterion that measures the mean absolute error (MAE) between each element in the logits $$x$$ and targets $$y$$. It is useful in regression problems.

The unreduced (i.e. with reduction set to 'none') loss can be described as:

$\ell(x, y) = L = \{l_1,\dots,l_N\}^\top, \quad l_n = \left| x_n - y_n \right|,$

where $$N$$ is the batch size. If reduction is not 'none' (default 'mean'), then:

$\begin{split}\ell(x, y) = \begin{cases} \operatorname{mean}(L), & \text{if reduction} = \text{mean';}\\ \operatorname{sum}(L), & \text{if reduction} = \text{sum'.} \end{cases}\end{split}$

$$x$$ and $$y$$ are tensors of arbitrary shapes with a total of $$n$$ elements each.

The sum operation still operates over all the elements, and divides by $$n$$.

The division by $$n$$ can be avoided if one sets reduction = 'sum'.

Supports real-valued and complex-valued inputs.

Parameters:
• logits (ArrayType) – $$(N, *)$$ where $$*$$ means, any number of additional dimensions.

• targets (ArrayType) – $$(N, *)$$, same shape as the input.

• reduction (str) – Specifies the reduction to apply to the output: 'none' | 'mean' | 'sum'. Default: 'mean'. - 'none': no reduction will be applied, - 'mean': the sum of the output will be divided by the number of elements in the output, - 'sum': the output will be summed. Note: size_average

Returns:

output – If reduction is 'none', then $$(N, *)$$, same shape as the input.

Return type:

scalar.