`@grad_from_chainrules` does not support `where` clauses
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
Línea de trabajo
Read src/macros.jl around the @grad_from_chainrules signature check and generated method definitions, then compare the f6/f7 cases in test/MacrosTests.jl. Check how the macro handles where clauses and their parameters. Done means the shown constrained signature is accepted and tests cover where clauses, including related argument types.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
@grad_from_chainrules rejects signatures with a where clause:
using ReverseDiff, ChainRulesCore
f(x) = sum(x)
ChainRulesCore.rrule(::typeof(f), x) = f(x), Δ -> (NoTangent(), fill(Δ, size(x)))
ReverseDiff.@grad_from_chainrules f(x::ReverseDiff.TrackedArray{T}) where {T <: AbstractFloat}
ERROR: LoadError: `@grad_from_chainrules` has to be applied to a function signature
Expected: the rule is imported for TrackedArray{<:AbstractFloat}, as with @grad, which accepts where clauses (covered by the f6/f7 tests in test/MacrosTests.jl). Without them you can't import a rule only for tracked arrays of a given element type, or tie the types of several arguments together (e.g. x::TrackedArray{T}, y::AbstractArray{T}).
Cause: the macro only accepts an Expr(:call, ...). A where clause wraps the call in Expr(:where, ...), and the generated method definitions don't carry whereparams through either.
ReverseDiff master (b796032, v1.18.4), Julia 1.13.1.
- Lenguaje dominante
- Julia
- Estrellas
- 396
- Forks
- 61
- Merge medio
- 23 h 18 min
- PR fusionados (30 d)
- 16
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/ReverseDiff.jl
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
JuliaDiff/ReverseDiff.jl#318 ·
Los mantenedores suelen responder en 1 día
-
`@grad`/`@grad_from_chainrules` silently reuse a tangent if a pullback returns too few tangentsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
JuliaDiff/ReverseDiff.jl#315 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
JuliaDiff/ReverseDiff.jl#314 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 56/100
JuliaDiff/ReverseDiff.jl#321 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
JuliaDiff/ReverseDiff.jl#319 ·
Los mantenedores suelen responder en 1 día
Todos los issues de JuliaDiff/ReverseDiff.jl
Issues similares
-
Chains resumed from `initial_state` take `num_warmup + 1` warm-up stepsPosiblemente ocupada @thevolatilebit la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
TuringLang/AbstractMCMC.jl#220 ·
-
found-by-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
exanauts/SparseDirectSolver.jl#92 ·
Los mantenedores suelen responder en 1 día
-
`inv` of a dense matrix fails for arrays whose `parent` is not an array of the same kindPosiblemente ocupada @devmotion la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
JuliaLang/LinearAlgebra.jl#1740 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
NumericalEarth/Breeze.jl#1051 ·
Los mantenedores suelen responder en 1 día