Error trying to differentiate `eachindex`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Reproduce el fallo de test/diffractor.jl usando el ejemplo de eachindex e inspecciona el stack trace a través de unbundle en tangent.jl y las rutas de broadcast. Se considera terminado cuando el ejemplo se diferencia sin el MethodError reportado y hay una prueba de regresión que cubre el comportamiento.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Julia
- Estrellas
- 453
- Forks
- 33
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaDiff/Diffractor.jl
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
JuliaDiff/Diffractor.jl#302 · 2 comentarios ·
-
Wrong derivative of exp(cos(x))Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
JuliaDiff/Diffractor.jl#294 ·
-
Incorrect Jacobian calculationAbiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
JuliaDiff/Diffractor.jl#293 ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
JuliaDiff/Diffractor.jl#290 · 8 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
JuliaDiff/Diffractor.jl#278 · 1 comentario · 1 reacción ·
Todos los issues de JuliaDiff/Diffractor.jl
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
CliMA/ClimaAtmos.jl#4891 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
tagbot-manual
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
tshort/StaticCompiler.jl#191 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
SciML/SciMLSensitivity.jl#1703 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
JuliaGPU/GPUCompiler.jl#1008 ·
Los mantenedores suelen responder en 1 día
-
`biggs6` disagrees with CUTEst and is unbounded belowPosiblemente ocupada @timholy la tomó hace 1 día. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100