Pytorch库中torch.normal()详解
torch.normal()用法
torch.normal()
函数,用于生成符合正态分布(高斯分布)的随机数。在 PyTorch 中,这个函数通常用于生成 Tensor。
该函数共有四个方法:
@overload def normal(mean: Tensor, std: Tensor, *, generator: Optional[Generator] = None, out: Optional[Tensor] = None) -> Tensor: ... @overload def normal(mean: Tensor, std: _float = 1, *, generator: Optional[Generator] = None, out: Optional[Tensor] = None) -> Tensor: ... @overload def normal(mean: _float, std: Tensor, *, generator: Optional[Generator] = None, out: Optional[Tensor] = None) -> Tensor: ... @overload def normal(mean: _float, std: _float, size: Sequence[Union[_int, SymInt]], *, generator: Optional[Generator] = None, out: Optional[Tensor] = None, dtype: Optional[_dtype] = None, layout: Optional[_layout] = None, device: Optional[Optional[DeviceLikeType]] = None, pin_memory: Optional[_bool] = False, requires_grad: Optional[_bool] = False) -> Tensor: ...
参数解析
mean
:表示正态分布的均值 (μ)。可以是一个标量,也可以是一个张量,如果是张量,其形状必须与std
相容。如果mean
是一个张量,那么函数将生成与mean
相同形状的随机数张量,并以mean
中的值作为各个维度的均值。std
:表示正态分布的标准差 (σ)。可以是一个标量,也可以是一个张量,如果是张量,其形状必须与mean
相容。如果std
是一个张量,那么函数将生成与std
相同形状的随机数张量,并以std
中的值作为各个维度的标准差。*
(星号):星号后的参数为关键字参数,只能用关键字指定。
size
:指定生成张量的尺寸。generator=None
:指定一个随机数生成器。PyTorch 常用torch.Generator()
创建生成器。如果不指定,使用默认生成器。out=None
:用于指定输出的 Tensor。如果不提供,函数将返回一个新创建的 Tensor。
返回值
返回一个张量,其形状与 mean
和 std
相同,其中的元素服从均值为 mean
,标准差为 std
的正态分布。
使用示例
import torch random_value = torch.normal(mean=0.0, std=1.0, size=(2, 2)) print(random_value) # 生成一个服从均值0和标准差1的单个随机数 random_value = torch.normal(mean=0, std=1, size=(1,)) print(random_value) # 生成一个服从均值0和标准差1的张量 mean_tensor = torch.zeros(3, 3) # 均值张量 std_tensor = torch.ones(3, 3) # 标准差张量 random_tensor = torch.normal(mean_tensor, std_tensor) print(random_tensor) # 使用指定生成器生成随机数 generator = torch.Generator().manual_seed(42) random_value_with_generator = torch.normal(mean=0.0, std=1.0, size=(2, 2), generator=generator) print(random_value_with_generator) # 输出到指定Tensor out_tensor = torch.empty(3, 3) torch.normal(mean_tensor, std_tensor, out=out_tensor) print(out_tensor)
以上是 torch.normal()
函数的基本用法。可以根据具体需求调整 mean
和 std
的值来生成不同形状、不同均值和标准差的正态分布随机数。
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接