`f/rrules` should support receiving `ZeroTangent()`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
Línea de trabajo
Comienza con los fallos recopilados mediante ChainRulesTestUtils PR 176 e inspecciona los pullbacks afectados de ChainRules.jl y el manejo de ZeroTangent. Reproduce los errores informados, determina qué casos deberían proyectar ZeroTangent frente a admitirlo directamente, y considera terminado el trabajo cuando se resuelvan los errores de prueba relevantes sin concesiones inaceptables en las asignaciones.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Similarly to https://github.com/JuliaDiff/ChainRules.jl/issues/408, ZeroTangent() is a valid input to the pullback, and we need to make sure it is supported.
Using https://github.com/JuliaDiff/ChainRulesTestUtils.jl/pull/176, there are at least three kinds of errors:
- Pullbacks are written such that they do not support taking in
ZeroTangent(), e.g.
MethodError: no method matching (::ChainRules.var"#transpose_pullback#1894")(::ZeroTangent). These just need to be fixed in ChainRules.jl - Places where we (I think?) have to
projecttheZeroTangent():
TypeError: in Hermitian, in S, expected S<:(AbstractArray{var"#s832", 2} where var"#s832"<:T), got Type{ZeroTangent}
and
MethodError: Cannot `convert` an object of type
ZeroTangent to an object of type
Matrix{T} where T
- Errors which could be solved by
projecting theZeroTangent()e.g.
MethodError: no method matching getindex(::ZeroTangent, ::Int64). The question is whether we actually want to project to an array, since that would allocate quite a bit. Alternatively, we could defineBase.getindex(::ZeroTangent, args...) = ZeroTangent(). There might be quite a few of these functions to define, but it would be much faster.
Some examples are:
MethodError: no method matching Complex(::ZeroTangent)MethodError: no method matching mapfoldl(::typeof(identity), ::typeof(Base.add_sum), ::ZeroTangent; dims=Colon())MethodError: no method matching tr(::ZeroTangent)MethodError: no method matching mul!(::ZeroTangent, ::Matrix{Float64}, ::ZeroTangent, ::Bool, ::Bool)MethodError: no method matching trsyl!(::Char, ::Char, ::Matrix{ComplexF64}, ::Matrix{ComplexF64}, ::ZeroTangent)MethodError: no method matching size(::ZeroTangent, ::Int64)MethodError: no method matching LowerTriangular(::ZeroTangent)
and the list goes on
This is just a quick (incomplete) dump of observations and first thoughts. I may have missed kinds of errors, or said things which are untrue.
Alltogether:
Test Summary: | Pass Error Broken Total
ChainRules | 24330 429 4 24763
- Lenguaje dominante
- Julia
- Estrellas
- 475
- Forks
- 98
- 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/ChainRules.jl
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
JuliaDiff/ChainRules.jl#844 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
JuliaDiff/ChainRules.jl#818 ·
-
refactoring
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
JuliaDiff/ChainRules.jl#815 ·
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
JuliaDiff/ChainRules.jl#810 ·
-
stack overflow issueAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
JuliaDiff/ChainRules.jl#809 ·
Todos los issues de JuliaDiff/ChainRules.jl
Issues similares
-
Dificultad 2/5 Menos de una hora Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
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