变密度采样
变密度采样:按兴趣函数在参数空间加密采样的支撑点生成器。
quatm.utils 包提供 Quatm 框架中跨模块使用的通用工具函数。
quatm.utils.vds变密度采样(Variable Density Sampling, VDS)允许在参数空间中高效探索,将采样点集中在感兴趣的区域(如量子系统中的共振或相变附近)。
在物理实验中,某些参数区域比其他区域更有意义。例如:
VDS 通过在感兴趣区域自动加密采样点,在平坦区域稀疏采样,实现以最少的数据点获取最多信息。
gauss_prime_norm — 归一化高斯导数高斯函数的导数,归一化到最大值为 1:
$$f(x) = \sqrt{e} \cdot \frac{x - \mu}{\sigma} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$$
from quatm.utils.vds import gauss_prime_norm
# 计算 x=5.0 处的高斯导数值
val = gauss_prime_norm(5.0, mu=5.0, sigma=1.0)
| 参数 | 说明 |
|---|---|
x | 输入值,可以是标量或 numpy.ndarray |
mu | 高斯中心 |
sigma | 高斯标准差 |
gauss_prime_norm_abs — 绝对值归一化高斯导数高斯导数绝对值的归一化形式,适合用作对称峰检测的兴趣函数。
create_support_points_stochastic — 随机支持点生成从精细等距网格开始,随机移除低兴趣区域的点,保留高兴趣区域的点。
from quatm.utils.vds import (
create_support_points_stochastic,
gauss_prime_norm_abs
)
# 定义兴趣函数:在 x=5.0 附近集中采样
def interest(x, center, width):
return gauss_prime_norm_abs(x, center, width)
points = create_support_points_stochastic(
start=0.0, # 扫描起点
stop=10.0, # 扫描终点
steps=50, # 最终支持点数量
interest_fn=interest,
max_stepsize=0.5, # 最大允许步长
enhancement=0.8, # 0-1,1 表示强增强
center=5.0, # 传递给 interest_fn
width=1.0 # 传递给 interest_fn
)
| 参数 | 说明 |
|---|---|
start | 扫描起点,始终包含在最终支持点中 |
stop | 扫描终点,始终包含在最终支持点中 |
steps | 最终支持点数量 |
interest_fn | 兴趣函数 f(x, **kwargs),返回 0(低兴趣)到 1(高兴趣) |
max_stepsize | 相邻支持点最大间距 |
enhancement | 0-1,1 表示强增强感兴趣区域,0 表示均匀随机采样 |
**kwargs | 传递给 interest_fn 的额外参数 |
变密度采样特别适用于:
变密度采样:按兴趣函数在参数空间加密采样的支撑点生成器。