Функция normal
Функция normal создаёт тензор с элементами,
извлечёнными из нормального распределения с заданными
параметрами mean (среднее) и std
(стандартное отклонение). Она поддерживает автоматическое
расширение формы (broadcasting) для параметров, что
позволяет гибко задавать распределения для каждого элемента.
Первый параметр - mean, второй - std,
третий (опционально) - size (форма тензора).
Синтаксис
torch.normal(mean, std, [size], [out], [dtype], [layout], [device], [requires_grad])
Пример
Создадим тензор размера 3×3 со случайными числами,
имеющими среднее 0 и стандартное отклонение 1:
import torch
torch.manual_seed(0)
t = torch.normal(0, 1, size=(3, 3))
print(t)
Результат выполнения кода:
tensor([
[ 1.5410, -0.2934, -2.1788],
[ 0.5684, -1.0845, -1.3986],
[ 0.4033, 0.8380, -0.7193],
])
Пример
Сгенерируем тензор со значениями, взятыми из нормальных распределений с разными средними, заданными тензором:
import torch
torch.manual_seed(1)
mean = torch.tensor([0.0, 5.0, 10.0])
std = 1.0
t = torch.normal(mean, std)
print(t)
Результат выполнения кода:
tensor([-0.7073, 4.5768, 9.9958])
Пример
Используем разные средние и стандартные отклонения для каждого элемента с помощью broadcasting:
import torch
torch.manual_seed(2)
mean = torch.tensor([[0.0], [5.0]])
std = torch.tensor([1.0, 2.0, 3.0])
t = torch.normal(mean, std)
print(t)
Результат выполнения кода:
tensor([
[-0.5659, 1.8308, 1.4666],
[ 5.2710, 5.5934, 4.6387],
])
Пример
Если параметры mean и std являются скалярами,
обязательно указывать аргумент size:
import torch
torch.manual_seed(3)
t = torch.normal(2.0, 0.5, size=(2, 4))
print(t)
Результат выполнения кода:
tensor([
[2.1993, 2.5843, 2.4363, 1.7093],
[2.2160, 2.0222, 1.3839, 1.8702],
])
Смотрите также
-
функцию
rand,
которая генерирует тензор со случайными числами из равномерного распределения на отрезке [0, 1) -
функцию
randn,
которая создаёт тензор со случайными числами из стандартного нормального распределения (mean=0, std=1) -
функцию
normal,
которая является основным инструментом для генерации нормально распределённых случайных чисел в PyTorch -
функцию
rand_like,
которая создаёт тензор той же формы, что и переданный, но с равномерно распределёнными элементами