jax version of GeneralizedExtremeValue distribution has wrong support for concentration=0
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 42/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- python
调研方向
从 tensorflow_probability.substrates.jax.distributions 中的 tfd.GeneralizedExtremeValue 开始,并针对零附近的 concentration 值运行提供的 JAX 复现。将 concentration=0 时报告的 support 和 log_prob 行为与预期的无界 support 进行比较;当 JAX substrate 能够按照所述预期一致地处理该情况,并且相关行为已由回归测试覆盖时,该 issue 即完成。
由索引模型根据 Issue 内容生成。
描述
It seems like the support of the GEV is (-1.0, inf) for concentration=0, rather than the expected (-inf, inf). I am using:
tensorflow-probability 0.24.0jax 0.4.30
I only tested this for the tensorflow_probability.substrates.jax.distributions version.
Otherwise, the support seems to be fine. Here's a little experiment for reproducing my findings:
import tensorflow_probability.substrates.jax.distributions as tfd
import jax.numpy as jnp
import pandas as pd
from itertools import product
def nominal_gev_support(loc, scale, concentration):
if jnp.allclose(concentration, 0.0):
return (-jnp.inf, jnp.inf)
if concentration > 0.0:
return (loc - scale / concentration, jnp.inf)
if concentration < 0.0:
return (-jnp.inf, loc - scale / concentration)
x = jnp.linspace(-5, 5, 1000)
cases = []
locs = [0.0]
scales = [1.0]
concentrations = list(jnp.linspace(-2, 2, 9))
for loc, scale, concentration in product(locs, scales, concentrations):
cases.append({"loc": loc, "scale": scale, "concentration": concentration})
dfs = []
for case in cases:
gev = tfd.GeneralizedExtremeValue(
loc=case["loc"], scale=case["scale"], concentration=case["concentration"]
)
lp = gev.log_prob(x)
not_nan_indices = jnp.argwhere(~jnp.isinf(lp))
nominal_min, nominal_max = nominal_gev_support(
loc=case["loc"], scale=case["scale"], concentration=case["concentration"]
)
data = {
"nominal_min": nominal_min,
"nominal_max": nominal_max,
"observed_min": x[not_nan_indices].min(),
"observed_max": x[not_nan_indices].max()
}
data |= case
df = pd.DataFrame(data, index=[0])
dfs.append(df)
results = pd.concat(dfs)
results
- 主要语言
- Jupyter Notebook
- 星标
- 4.4k
- 派生
- 1.1k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
tensorflow/probability 的其他 Issue
-
KL divergence between two `TransformedDistribution`s with a shared non-injective bijector (`AbsoluteValue`) returns the base KL可能已有人在做 @Andreas-Hum 于 8 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
tensorflow/probability#2036 ·
-
难度 4/5 3-5 天 新手友好度 54/100
tensorflow/probability#2040 ·
-
难度 3/5 1-2 天 新手友好度 68/100
tensorflow/probability#2034 ·
-
难度 5/5 一周以上 新手友好度 35/100
tensorflow/probability#2021 ·
-
难度 4/5 3-5 天 新手友好度 30/100
tensorflow/probability#2015 ·
查看 tensorflow/probability 的全部 Issue
相似的 Issue
-
bug good first issue
难度 2/5 1-3 小时 新手友好度 84/100
Selectus2/trainers-rb#29 ·
-
training
难度 2/5 1-3 小时 新手友好度 72/100
tinaudio/synth-setter#3758 ·
维护者通常 1 天内回复
-
bot-triaged module: correctness (silent) module: data module: error checking triage review
难度 2/5 1-3 小时 新手友好度 71/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
vllm-project/vllm-ascend#21392 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 2 天内回复