Rule for `vect` unthunks many times
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- machine-learning
Direzione di ricerca
Inizia riproducendo l’esempio di ChainRulesCore e Yota riportato nell’issue, quindi esamina le regole coinvolte nello stack mostrato e i casi sospetti come hvcat alla ricerca di chiamate ripetute a unthunk. Il lavoro è completato quando le regole interessate fanno unthunk dei propri input una sola volta e la riproduzione non stampa più valutazioni ripetute.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This:
using ChainRulesCore
myplus(x,y) = x + y
function ChainRulesCore.rrule(::typeof(myplus), x, y)
println("myplus rrule forward")
x+y, dz -> begin
println("myplus rrule reverse, dz isa ", typeof(dz))
NoTangent(), @thunk(unthunk(dz)), @thunk @show unthunk(dz)
end
end
using Yota
grad([1,2,3]) do x
prod(myplus(x, [4,5,6]))
end
prints this:
myplus rrule forward
myplus rrule reverse, dz isa InplaceableThunk{Thunk{ChainRules.var"#1675#1678"{Float64, Colon, Vector{Float64}, ProjectTo{AbstractArray, NamedTuple{(:element, :axes), Tuple{ProjectTo{Float64, NamedTuple{(), Tuple{}}}, Tuple{Base.OneTo{Int64}}}}}, Float64}}, ChainRules.var"#1674#1677"{Float64, Colon, Vector{Float64}, Float64}}
unthunk(dz) = [63.0, 45.0, 35.0]
unthunk(dz) = [63.0, 45.0, 35.0] # from @show dz inside the @thunk, runs 3 times
unthunk(dz) = [63.0, 45.0, 35.0]
(315.0, (ZeroTangent(), [63.0, 45.0, 35.0]))
Almost all rules should call unthunk exactly once on their input, maybe others make the same mistake, e.g. hvcat?
- Lingua principale
- Julia
- Stelle
- 475
- Fork
- 98
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaDiff/ChainRules.jl
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
JuliaDiff/ChainRules.jl#844 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 55/100
JuliaDiff/ChainRules.jl#818 ·
-
refactoring
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaDiff/ChainRules.jl#815 ·
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
JuliaDiff/ChainRules.jl#810 ·
-
stack overflow issueAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
JuliaDiff/ChainRules.jl#809 ·
Tutte le issue di JuliaDiff/ChainRules.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
SciML/OrdinaryDiffEq.jl#4875 ·
I maintainer di solito rispondono entro 3 giorni
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
SciML/NonlinearSolve.jl#1372 ·
I maintainer di solito rispondono entro 1 giorno
-
Truncated discrete ccdf and logccdf return incorrect values at the lower atomForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
JuliaStats/Distributions.jl#2095 ·
-
documentation 📜 microphysics💧 ❄️
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
NumericalEarth/Breeze.jl#1073 ·
I maintainer di solito rispondono entro 1 giorno