Add `min` and `max` rev specializations?
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
まずリンクされた Stack Exchange と PyTorch の議論を読み、その後、ライブラリに既にある min/max API と reverse-mode の特殊化パターンを調べてください。等しい引数と提案された勾配を含め、スカラーおよびベクトルの意図された挙動を明確にしてください。合意された特殊化が、これらのケースをカバーするテスト付きで実装されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
From this stackoverflow post it looks like we can phrase max(a,b) into
$$
max(a,b) = \frac{a + b + |a-b|}{2}
$$
and similarly for min
$$
min(a,b) = \frac{a + b - |a-b|}{2}
$$
So except for the case when $a=b$ this function is differentiable. For max we have
$$
\begin{align}
\frac{\partial max}{a} = \frac{1}{2} + \frac{sign(a-b)}{2}
\frac{\partial max}{a} = \frac{1}{2} + \frac{sign(a-b)}{2}
\end{align}
$$
so if a>b the gradient is 1 and if a<b the gradient is 1/2. For min we have
$$
\begin{align}
\frac{\partial min}{a} = \frac{1}{2} - \frac{sign(a-b)}{2}
\frac{\partial min}{a} = \frac{1}{2} - \frac{sign(a-b)}{2}
\end{align}
$$
where if $a>b$ the gradient is 0 and if $a<b$ the gradient is 1/2
From this it seems like pytorch does something similar to the above. I think this would be nice to implement. We can also write min(vector) for these as well.
- 主要言語
- C++
- スター
- 845
- フォーク
- 225
- 平均マージ
- 3日 9時間
- マージ済み PR(30日)
- 12
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
stan-dev/math のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 54/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 54/100
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
numerics performance
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
stan-dev/math#3481 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
`eigendecompose_sym`, `eigenvalues_sym` and `eigenvectors_sym` do not compile for complex matrices of `fvar<var>` or `fvar<fvar<double>>`再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンbug
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
stan-dev/math#3477 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
rhalbersma/xstd-ints#395 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Root filesystem scope (/) incorrectly rejects all descendant paths対応中かも @mugenkyou が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
neutralinojs/neutralino.js#304 · コメント 1 件 ·
-
FuSa
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
tenstorrent/tt-umd#3851 ·
メンテナーはふだん 3 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
mattgodbolt/zindex#67 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100