Test Linearity
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- julia
- 領域
- testing-qa
調査の方向性
ファイルパスもテストパスも指定されていません。まず既存の rand_tangent、rrule、frule のテストユーティリティを読み、その後 pushforward と pullback の線形性をどのように検証すべきかを判断してください。zero と scalar に対する挙動の合意済みテストを追加できれば完了です。ただし、加法性は利用可能な微分生成がそれをサポートしている場合にのみ含めます。
索引モデルが issue の本文から書いたものです。
説明
Pushforwards and pullbacks are requred to be linear operators.
Which formally is defined as φ(𝛼x) = 𝛼φ(x) and φ(a+b) = φ(a) + φ(b) for a,b,x differentials/vector space elements, and 𝛼 being a scalar.
A important collory of that is φ(0) = 0 where two 0s are the additive identity for the relivent vector spaces.
Which we can test with iszero(φ(zero(d)), since we always have access to a differential d, and all differentials must define zero and iszero.
Similarly we can test φ(𝛼x) = 𝛼φ(x) via φ(2d) == 2φ(d) since all differnetial define multiplication with a scalar. and we have one provided d.
We can't easily test φ(a+b) = φ(a) + φ(b) though, as we only have one differential.
We can test φ(d+d) = φ(d) + φ(d) but that is less interesting.
If we are generating them using rand_tangent we can easily generate another.
Though perhaps we should be insisting that things define the addition of there natural differentials with the structural differentials that rand_tangent will most often provide (though sometimes rand_tangent's structural differential will have extra nondifferentiable fields so we can't trust it, unless we insist the user does actually overload it).
Or we could avoid direct additon and do (primal + rand_tangent(d)) + d) though this is getting off-topic..
Possibly just skip that in initial implementation of this
The linear pullback can be extracted from the rrule via (f,primal...) -> (ds...) -> last(rrule(f, primal...))(ds...) (or equiv: (f,primal) -> last(rrule(f, primal)))
The linear pushforward can be extracted from frulevia(f,primal) -> (ds...) -> frule(ds..., f, primal...)`
- 主要言語
- Julia
- スター
- 50
- フォーク
- 18
- 平均マージ
- 1時間 54分
- マージ済み PR(30日)
- 1
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaDiff/ChainRulesTestUtils.jl のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
JuliaDiff/ChainRulesTestUtils.jl#148 · リアクション 1 件 ·
-
use DocThemeIndigoオープンdocumentation good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
-
mutation
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
JuliaDiff/ChainRulesTestUtils.jl の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
JuliaMath/BFloat16s.jl#138 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
SciML/DiffEqParamEstim.jl#350 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 61/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
MagneticResonanceImaging/MRIReco.jl#311 ·
メンテナーはふだん 1 日以内に返信
-
ka_cpu_alloc_budget: the 320 B/launch KA 0.10 allowance is stale on KA 0.10.3 and hides allocationsオープンfound-by-agent
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
exanauts/SparseDirectSolver.jl#145 ·
メンテナーはふだん 1 日以内に返信