Pytorch库中torch.normal()详解

torch.normal()用法

torch.normal()函数,用于生成符合正态分布(高斯分布)的随机数。在 PyTorch 中,这个函数通常用于生成 Tensor。

该函数共有四个方法:

python 复制代码
@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 的正态分布。

使用示例

python 复制代码
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 的值来生成不同形状、不同均值和标准差的正态分布随机数。

相关推荐
千宇宙航2 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
IT古董2 小时前
【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(4)模型评价与调整(Model Evaluation & Tuning)
神经网络·机器学习·回归
onceco3 小时前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
jndingxin6 小时前
OpenCV CUDA模块设备层-----高效地计算两个 uint 类型值的带权重平均值
人工智能·opencv·计算机视觉
Sweet锦6 小时前
零基础保姆级本地化部署文心大模型4.5开源系列
人工智能·语言模型·文心一言
hie988947 小时前
MATLAB锂离子电池伪二维(P2D)模型实现
人工智能·算法·matlab
晨同学03277 小时前
opencv的颜色通道问题 & rgb & bgr
人工智能·opencv·计算机视觉
蓝婷儿7 小时前
Python 机器学习核心入门与实战进阶 Day 3 - 决策树 & 随机森林模型实战
人工智能·python·机器学习
大千AI助手7 小时前
PageRank:互联网的马尔可夫链平衡态
人工智能·机器学习·贝叶斯·mc·pagerank·条件概率·马尔科夫链
小和尚同志7 小时前
Cline | Cline + Grok3 免费 AI 编程新体验
人工智能·aigc