Error when using scalar vs. vector to operate on tracked inupt
Una pull request collegata è già stata integrata.
- #301 di @devmotion — integrata
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia eseguendo la funzione mwe fornita con ReverseDiff.hessian su Julia 1.8.3 e ReverseDiff.jl v1.14.4, confrontando lo scalare c con il vettore a un elemento [c]. Segui il percorso che fallisce nel caso scalare e verifica che il calcolo dell’Hessiana venga completato senza l’errore di metodo osservato in aa*sin(dd).
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi ReverseDiff team,
I've found an error that comes up when an object used in a function being differentiated is the result of a tracked array and another argument (not the one we are finding the derivative with respect to) when the other argument is a scalar. I understand my explanation is a bit imprecise, a minimum reproducible example is below. In the line labeled "doesn't work" the arg c is treated as a scalar. In the line labeled "works" it is treated as a length one vector. The object d is used in further computation; when c is treated as a scalar this leads to a method error when it (an element of the resulting object d) is used in the line aa*sin(dd).
[EDIT]: I'm on Julia 1.8.3 and the version of ReverseDiff.jl on the Julia general repo (v1.14.4).
using ReverseDiff
using Distributions
# a,b are vectors; want Hessian w.r.t a
# c is "scalar" arg
function mwe(a,b,c)
d = @. a/(b+c)
e = map(a,b,d) do aa, bb, dd
if dd < bb
exp(bb)
else
aa*sin(dd)
end
end
return sum(e)
end
a = rand(Normal(),5)
b = rand(Normal(),5)
c = 50.0
ReverseDiff.hessian(x -> mwe(x, b, c), a) # doesn't work
ReverseDiff.hessian(x -> mwe(x, b, [c]), a) # works
- Lingua principale
- Julia
- Stelle
- 397
- Fork
- 62
- Merge medio
- 11h 37m
- PR unite (30g)
- 6
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/ReverseDiff.jl
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
JuliaDiff/ReverseDiff.jl#318 ·
-
`@grad`/`@grad_from_chainrules` silently reuse a tangent if a pullback returns too few tangentsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
JuliaDiff/ReverseDiff.jl#315 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
JuliaDiff/ReverseDiff.jl#314 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
JuliaDiff/ReverseDiff.jl#321 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
JuliaDiff/ReverseDiff.jl#320 ·
Tutte le issue di JuliaDiff/ReverseDiff.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
documentation invalid
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
JuliaPhysics/BeamletOptics.jl#190 ·
I maintainer di solito rispondono entro 1 giorno
-
mul! with a Symmetric or Hermitian factor throws for a matrix view whose columns are not contiguousForse già presa @dkarrasch l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
JuliaLang/LinearAlgebra.jl#1829 ·
I maintainer di solito rispondono entro 1 giorno
-
`EnsembleSummary` `ci_type = :SEM` ribbon is `sqrt(N)` too wide for scalar statesForse già presa @isaacsas l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
SciML/SciMLBase.jl#1654 ·
I maintainer di solito rispondono entro 3 giorni