Error trying to differentiate `eachindex`
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Reproduziere den Fehler aus test/diffractor.jl anhand des eachindex-Beispiels und untersuche den Stacktrace über unbundle in tangent.jl sowie die Broadcast-Pfade. Erledigt ist die Aufgabe, wenn das Beispiel ohne den gemeldeten MethodError differenziert und ein Regressionstest das Verhalten abdeckt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
This came up in a test suite:
julia> import AbstractDifferentiation as AD
julia> import Diffractor: DiffractorForwardBackend
julia> h(x::AbstractVector) = eachindex(x) .* x
h (generic function with 1 method)
julia> AD.jacobian(DiffractorForwardBackend(), h, [1, 2])
ERROR: MethodError: no method matching size(::ChainRulesCore.Tangent{Base.OneTo{Int64}, @NamedTuple{stop::Int64}})
Closest candidates are:
size(::Base.MethodList)
@ Base reflection.jl:1042
size(::BitVector)
@ Base bitarray.jl:104
size(::BitVector, ::Integer)
@ Base bitarray.jl:107
...
Stacktrace:
[1] axes
@ ./abstractarray.jl:98 [inlined]
[2] call_composed(fs::Tuple{typeof(axes)}, x::Tuple{ChainRulesCore.Tangent{Base.OneTo{…}, @NamedTuple{…}}}, kw::@Kwargs{})
@ Base ./operators.jl:1045
[3] call_composed
@ ./operators.jl:1044 [inlined]
[4] (::ComposedFunction{…})(x::ChainRulesCore.Tangent{…}; kw::@Kwargs{})
@ Base ./operators.jl:1041
[5] map
@ ./tuple.jl:292 [inlined]
[6] findconsistentvalue(f::typeof(axes), cols::Tuple{Base.OneTo{…}, ChainRulesCore.Tangent{…}})
@ StructArrays ~/.julia/packages/StructArrays/CjQ4L/src/utils.jl:208
[7] (StructArrays.StructVector{…})(c::Tuple{…})
@ StructArrays ~/.julia/packages/StructArrays/CjQ4L/src/structarray.jl:18
[8] (StructArrays.StructArray{Diffractor.TangentBundle{…} where P})(c::Tuple{Base.OneTo{…}, ChainRulesCore.Tangent{…}})
@ StructArrays ~/.julia/packages/StructArrays/CjQ4L/src/structarray.jl:94
[9] unbundle(atb::Diffractor.TangentBundle{1, Base.OneTo{Int64}, Diffractor.TaylorTangent{Tuple{…}}})
@ Diffractor ~/.julia/packages/Diffractor/v1WuP/src/tangent.jl:365
[10] (::Diffractor.var"#205#206"{1, Diffractor.∂☆{…}, Diffractor.TangentBundle{…}})(i::Int64)
@ Diffractor ~/.julia/packages/Diffractor/v1WuP/src/stage1/broadcast.jl:23
[11] ntuple(f::Diffractor.var"#205#206"{1, Diffractor.∂☆{…}, Diffractor.TangentBundle{…}}, n::Int64)
@ Base ./ntuple.jl:19
[12] (::Diffractor.∂☆{…})(zc::Diffractor.TangentBundle{…}, bc::Diffractor.TangentBundle{…})
@ Diffractor ~/.julia/packages/Diffractor/v1WuP/src/stage1/broadcast.jl:16
[13] materialize
@ ./broadcast.jl:903 [inlined]
[14] (::Diffractor.∂☆recurse{…})(::Diffractor.TangentBundle{…}, ::Diffractor.TangentBundle{…})
@ Diffractor ~/.julia/packages/Diffractor/v1WuP/src/stage1/recurse_fwd.jl:0
[15] (::Diffractor.∂☆internal{…})(::Diffractor.TangentBundle{…}, ::Vararg{…})
@ Diffractor ~/.julia/packages/Diffractor/v1WuP/src/stage1/forward.jl:114
[16] ∂☆
@ ~/.julia/packages/Diffractor/v1WuP/src/stage1/forward.jl:161 [inlined]
[17] h
@ ~/Work/GitHub/Julia/DifferentiationInterface.jl/test/diffractor.jl:13 [inlined]
[18] ∂☆internal
@ ~/.julia/packages/Diffractor/v1WuP/src/stage1/forward.jl:114 [inlined]
[19] ∂☆
@ ~/.julia/packages/Diffractor/v1WuP/src/stage1/forward.jl:161 [inlined]
[20] (::Diffractor.var"#pushforward#370"{typeof(h), Tuple{Vector{Int64}}})(vs::Tuple{Vector{Int64}})
@ Diffractor ~/.julia/packages/Diffractor/v1WuP/src/AbstractDifferentiation.jl:17
[21] #369
@ ~/.julia/packages/AbstractDifferentiation/RGmzD/src/AbstractDifferentiation.jl:644 [inlined]
[22] mapslices(f::Diffractor.var"#369#373"{Diffractor.var"#pushforward#370"{…}}, A::Matrix{Int64}; dims::Int64)
@ Base ./abstractarray.jl:3191
[23] jacobian(b::DiffractorForwardBackend, f::Function, args::Vector{Int64})
@ Diffractor ~/.julia/packages/AbstractDifferentiation/RGmzD/src/AbstractDifferentiation.jl:642
[24] top-level scope
@ ~/Work/GitHub/Julia/DifferentiationInterface.jl/test/diffractor.jl:15
Some type information was truncated. Use `show(err)` to see complete types.
- Vorherrschende Sprache
- Julia
- Sterne
- 453
- Forks
- 33
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus JuliaDiff/Diffractor.jl
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 25/100
JuliaDiff/Diffractor.jl#302 · 2 Kommentare ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 52/100
JuliaDiff/Diffractor.jl#294 ·
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
JuliaDiff/Diffractor.jl#293 ·
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
JuliaDiff/Diffractor.jl#290 · 8 Kommentare ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
JuliaDiff/Diffractor.jl#278 · 1 Kommentar · 1 Reaktion ·
Alle Issues in JuliaDiff/Diffractor.jl
Ähnliche Issues
-
enhancement good first issue help wanted
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 82/100
-
authority-vechtstromen ready-for-agent
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
Deltares/Ribasim-NL#890 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
Precompilation fails on Julia 1.14 nightly: HessenbergQ lmul! methods overwrite LinearAlgebra'sOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
JuliaLinearAlgebra/GenericLinearAlgebra.jl#183 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
JuliaGPU/KernelAbstractions.jl#897 ·
Maintainer antworten meist innerhalb von 1 Tag