torch.std_mean(input, dim=None, *, correction=1, keepdim=False, out=None)

Calculates the standard deviation and mean over the dimensions specified by dim. dim can be a single dimension, list of dimensions, or None to reduce over all dimensions.

The standard deviation (σ\sigma) is calculated as

σ=1max(0, NδN)i=0N1(xixˉ)2\sigma = \sqrt{\frac{1}{\max(0,~N - \delta N)}\sum_{i=0}^{N-1}(x_i-\bar{x})^2}

where xx is the sample set of elements, xˉ\bar{x} is the sample mean, NN is the number of samples and δN\delta N is the correction.

If keepdim is True, the output tensor is of the same size as input except in the dimension(s) dim where it is of size 1. Otherwise, dim is squeezed (see torch.squeeze()), resulting in the output tensor having 1 (or len(dim)) fewer dimension(s).

  • input (Tensor) – the input tensor.

  • dim (int or tuple of ints, optional) – the dimension or dimensions to reduce. If None, all dimensions are reduced.

Keyword Arguments
  • correction (int) –

    difference between the sample size and sample degrees of freedom. Defaults to Bessel’s correction, correction=1.

    Changed in version 2.0: Previously this argument was called unbiased and was a boolean with True corresponding to correction=1 and False being correction=0.

  • keepdim (bool) – whether the output tensor has dim retained or not.

  • out (Tensor, optional) – the output tensor.


A tuple (std, mean) containing the standard deviation and mean.


>>> a = torch.tensor(
...     [[ 0.2035,  1.2959,  1.8101, -0.4644],
...      [ 1.5027, -0.3270,  0.5905,  0.6538],
...      [-1.5745,  1.3330, -0.5596, -0.6548],
...      [ 0.1264, -0.5080,  1.6420,  0.1992]])
>>> torch.std_mean(a, dim=0, keepdim=True)
(tensor([[1.2620, 1.0028, 1.0957, 0.6038]]),
 tensor([[ 0.0645,  0.4485,  0.8707, -0.0665]]))


Access comprehensive developer documentation for PyTorch

View Docs


Get in-depth tutorials for beginners and advanced developers

View Tutorials


Find development resources and get your questions answered

View Resources