Каков диапазон распределения функции randn()?
В библиотеке для машинного обучения pytorch есть функция создания массива заполненного случайными числами нормального распределения.
Называется это функция randn(). Она на вход принимает обязательный аргумент size. Аргумент size может быть целым числом или кортежем (shape массива в случае кортежа, и одномерный массив в случае целого числа).
В официальной документации не нашел размер распределения. То есть, из какого диапазона выбираются эти случайные числа - границы диапазона?
Ответы (2 шт):
то есть из какого диапазона выбираются эти случайные числа - границы диапазона?
Ни каких (теоретических) границ нету.
Но практически (почти) все числа будет из интервала (-3, 3) - см. дальше.
Выбор случайных чисел функцией randn() такой, чтобы следовал (приблизительно) нормальное распределение с математическим ожиданием 0 и стандартным отключением 1.
Значит, для неравенства Чебышёва будет более чем
- 50% из них в интервале (-1, 1),
- 75% из них в интервале (-2, 2),
- 89% из них в интервале (-3, 3).
Но для неравенства Высочанского — Петунина:
- вероятность падения в интервал (-3, 3) приблизительно ровна даже 99.73 %.
Немного дополню ответ от @MarianD:
График нормального распределения вероятности:
Из графика видно, что:
- с вероятностью
68.3%значения попадают в интервал[-1, 1] - с вероятностью
95.5%значения попадают в интервал[-2, 2] - с вероятностью
99.7%значения попадают в интервал[-3, 3]
Практический пример:
Cоздаем 1D тензор, состоящий из 1.000.000 элементов и смотрим какие получились минимум и максимум:
In [18]: import torch
In [19]: a = torch.randn(10**6)
In [20]: a.min()
Out[20]: tensor(-5.0071)
In [21]: a.max()
Out[21]: tensor(5.4262)
