jax version of GeneralizedExtremeValue distribution has wrong support for concentration=0
まだ誰も着手していません。
評価
- 難易度
- 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 ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- 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 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
tensorflow/probability#2034 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
tensorflow/probability#2021 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
tensorflow/probability#2015 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
tensorflow/probability#2013 ·
tensorflow/probability の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
vllm-project/vllm-ascend#21392 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 2 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
type:epic-wave
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
jejjohnson/filterax#204 ·
メンテナーはふだん 1 日以内に返信
-
documentation good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
selimfirat/pysad#644 ·
メンテナーはふだん 1 日以内に返信