When we are computing variance and standard-deviation of a pytorch tensor, we will see unbiased parameter.
For example:
torch.var_mean(input, dim, unbiased, keepdim=False, *, out=None) torch.var(input, dim, unbiased, keepdim=False, *, out=None) torch.std(input, dim, unbiased, keepdim=False, *, out=None)
How to understand the effect of unbiased? In this tutorial, we will introduce it.
As to torch.var_mean() function, when unbiased = True, it means Bessel’s correction will be used will be used. However, it is so abstract.
How to understand unbiased when computing variance and standard-deviation?
- When unbiased = True, we will compute population variance.
- When unbiased = False, we will compute sample variance.
We will use an example to evaluate.
import torch import numpy as np x_len = torch.from_numpy(np.arange(10.0)) print(x_len.shape) var_1, mean_1 = torch.var_mean(x_len, unbiased=False) var_2, mean_2 = torch.var_mean(x_len, unbiased=True) print(var_1, mean_1) print(var_2, mean_2) print("population variance: unbiased=True") var_11 = torch.square(x_len - mean_1)/x_len.shape[0] var_11 = var_11.sum() print(var_11) print("sample variance: unbiased=False") var_22 = torch.square(x_len - mean_1)/(x_len.shape[0]-1) var_22 = var_22.sum() print(var_22)
Run this code, we will see:
torch.Size([10]) tensor(8.2500, dtype=torch.float64) tensor(4.5000, dtype=torch.float64) tensor(9.1667, dtype=torch.float64) tensor(4.5000, dtype=torch.float64) population variance: unbiased=True tensor(8.2500, dtype=torch.float64) sample variance: unbiased=False tensor(9.1667, dtype=torch.float64)
We can find:
unbiased=False, sample variance = 9.1667
unbiased=True, population variance = 8.2500