# MSELoss#

class brainpy.losses.MSELoss(reduction='mean')[source]#

Creates a criterion that measures the mean squared error (squared L2 norm) between each element in the input $$x$$ and target $$y$$.

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)^2,$

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 mean operation still operates over all the elements, and divides by $$n$$.

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

Parameters:

reduction (str, optional) – Specifies the reduction to apply to the output: 'none' | 'mean' | 'sum'. '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 and reduce are in the process of being deprecated, and in the meantime, specifying either of those two args will override reduction. Default: 'mean'

Shape:
• Input: $$(*)$$, where $$*$$ means any number of dimensions.

• Target: $$(*)$$, same shape as the input.

Examples:

>>> loss = nn.MSELoss()
>>> input = torch.randn(3, 5, requires_grad=True)
>>> target = torch.randn(3, 5)
>>> output = loss(input, target)
>>> output.backward()

update(input, target)[source]#

The function to specify the updating rule.

Return type:

TypeVar(ArrayType, Array, Variable, TrainVar, Array, ndarray)