如何在PyTorch中利用内置函数计算正态分布的概率密度值
使用PyTorch内置函数计算正态分布概率密度值
要计算给定样本对应正态分布的概率密度值,无需手动实现解析公式,直接用PyTorch的torch.distributions.Normal模块即可——它内置了对数概率密度计算方法,取指数后就能得到概率密度。
以下是完整实现代码:
import torch from torch.distributions import Normal # 定义均值、标准差 mean = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0]) std = torch.tensor([1.22, 0.78, 0.56, 1.23, 0.23]) # 待计算概率密度的样本(采用你提供的生成结果) sample = torch.tensor([-0.0367, 1.7494, 2.3784, 4.2227, 5.0095]) # 创建正态分布实例 normal_dist = Normal(mean, std) # 计算对数概率密度,再取指数得到概率密度值 log_prob = normal_dist.log_prob(sample) prob_density = torch.exp(log_prob) print("对数概率密度:", log_prob) print("概率密度值:", prob_density)
运行后会输出类似结果:
对数概率密度: tensor([-2.0641, -0.7264, -1.2007, -1.0502, -0.1922]) 概率密度值: tensor([0.1275, 0.4831, 0.3010, 0.3499, 0.8250])
说明
Normal类会根据输入的均值和标准差,创建对应维度的正态分布对象log_prob()方法直接计算样本的对数概率密度,避免手动实现公式可能出现的精度误差- 对对数概率密度调用
torch.exp(),即可得到原始的概率密度值
内容的提问来源于stack exchange,提问作者hanugm
相关产品推荐
相关产品推荐

