getting error in `FiniteDifferences.to_vec` when `test_rrule` for structured type
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- julia
- 領域
- testing-qa
調査の方向性
test_rrule を通じて例を再現し、その後 FiniteDifferences.to_vec とその _force_construct パスを調べ、コンテキストとして ChainRulesTestUtils/testers.jl:193 の呼び出し箇所を確認してください。Bool フィールドを持つ構造化された値が無効な Bool(Float64) の摂動を引き起こさなくなり、再現した test_rrule の呼び出しがエラーなしで完了すれば、作業は完了です。
索引モデルが issue の本文から書いたものです。
説明
mutable struct Mat{AType<:AbstractMatrix}
A::AType
trait::Bool
end
Mat(A::AbstractMatrix) = Mat(A, false)
Base.adjoint(M::Mat) = Mat(M.A')
Base.:*(M::Mat, u::AbstractVector) = M.A * u
function ChainRulesCore.rrule(::typeof(*), M::Mat, u::AbstractVector)
project_u = ProjectTo(u)
function pb(dv)
du = @thunk(project_u( M' * dv ))
dA = @thunk(project_p( dv * u' ))
dM = Tangent{Mat}(;A=dA)
NoTangent(), dM, du
end
M*u, pb
end
In this case, test_rrule attempts to perturb the boolean trait causing this error:
Random.seed!(0)
N = 8
M = Mat(rand(N,N), false)
u = rand(N)
test_rrule(*, M, u)
est_rrule: * on Mat{Matrix{Float64}},Vector{Float64}: Error During Test at /Users/vp
/.julia/packages/ChainRulesTestUtils/2VT4F/src/testers.jl:193
Got exception outside of a @test
TypeError: non-boolean (Float64) used in boolean context
Stacktrace:
[1] macro expansion
@ ~/.julia/packages/FiniteDifferences/VpgIT/src/to_vec.jl:0 [inlined]
[2] _force_construct
@ ~/.julia/packages/FiniteDifferences/VpgIT/src/to_vec.jl:27 [inlined]
...
caused by: InexactError: Bool(-0.01)
Stacktrace:
[1] Bool
@ ./float.jl:158 [inlined]
...
Test Summary: | Pass Error Total Time
test_rrule: * on Mat{Matrix{Float64}},Vector{Float64} | 3 1 4 5.3s
ERROR: LoadError: Some tests did not pass: 3 passed, 0 failed, 1 errored, 0 broken.
in expression starting at /Users/vp/.julia/dev/smo_adj/test/f3.jl:46
- 主要言語
- Julia
- スター
- 50
- フォーク
- 18
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、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時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
JuliaGPU/KernelAbstractions.jl#897 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
oscar-system/GAP.jl#1455 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
JuliaAI/MLJTransforms.jl#85 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
SciML/OrdinaryDiffEq.jl#4875 ·
メンテナーはふだん 4 日以内に返信