You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow Probability正态分布密度求和不为1问题求助

问题原因及解决方法

你忽略了**连续概率分布的离散求和近似需要乘以步长(区间宽度)**这一点。

正态分布是连续分布,其概率密度函数的积分(总面积)为1,但用离散点的概率密度值直接求和,得到的是所有点密度值的累加,而非积分结果。积分的离散近似(黎曼和)需要将每个点的密度值乘以相邻点之间的区间宽度(步长)。

具体计算验证

你的样本点范围是[-7, 7],共1e4个点,步长为:

dx = (7 - (-7)) / (int(1e4) - 1) ≈ 0.00140014

原求和结果约714.21,乘以步长后:714.21 × 0.00140014 ≈ 1,正好符合预期。

修正后的代码

直接对数组批量计算概率密度,再乘以步长求和,效率更高且结果正确:

import numpy as np
import tensorflow_probability as tfp
tfd = tfp.distributions

x = np.linspace(-7., 7., int(1e4), dtype=np.float64)
dx = x[1] - x[0]  # 获取相邻点的步长
prob_densities = tfd.Normal(loc=0, scale=1).prob(x)  # 批量计算所有点的密度值
integral_approximation = tf.reduce_sum(prob_densities * dx)
print(integral_approximation)

运行后结果会接近1,符合正态分布的密度积分性质。

内容的提问来源于stack exchange,提问作者H_Man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:45:30