Calculus.hessian is not symmetric
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Riproduci la chiamata segnalata a Calculus.hessian in Julia ed esamina finite_difference_hessian! in finite_difference.jl, in particolare il ciclo sul triangolo superiore e la chiamata finale a Base.LinAlg.copytri!(H, 'U'). Confronta gli elementi della matrice risultante nelle posizioni speculari e determina se la lieve asimmetria osservata ha origine nel calcolo dell’Hessiana o nell’operazione di copia del triangolo; il lavoro è completato quando il comportamento è spiegato e corretto oppure documentato chiaramente, con copertura per questo caso.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
julia> @time h10 = Calculus.hessian(RB.mylike, RB.troubleParamsSim1.raw)
209.557745 seconds (2.43 G allocations: 83.867 GB, 10.31% gc time)
10x10 Array{Float64,2}:
566.715 -206.282 -50.7658 … 3135.03 -89.8427
-206.282 566.715 17.7032 -1993.75 47.1135
-50.7658 17.7032 143.437 -1163.21 33.7016
17.7032 -50.7658 -47.7584 282.533 1.3897
182.291 -122.875 -12.5876 -2943.26 27.7885
-2.95777 -5.09084 2.97638 … -452.285 15.1723
-45.7494 12.5752 39.2448 0.613878 24.8811
-1942.38 804.496 450.315 -35319.9 1935.28
3135.03 -1993.75 -1163.21 56057.6 -2498.87
-89.8427 47.1135 33.7016 -2498.87 1041.54
julia> issym(h10)
false
Closer inspection of h10 shows all the errors are extremely small; the largest is 4e-8.
My original assumption was that this was the result of numerical noise from calculating the derivatives in different orders. But the code (finite_difference_hessian! in finite_difference.jl) appears to compute only the upper triangle,
for i = 1:n
#code omitted
# and i+1:n appears to be parses (i+1):n, which is right
for j = i+1:n
and then ends with
Base.LinAlg.copytri!(H,'U')
So maybe the problem is in copytri!.
- Lingua principale
- Julia
- Stelle
- 286
- Fork
- 78
- 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 JuliaMath/Calculus.jl
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 44/100
JuliaMath/Calculus.jl#157 · 1 commento ·
-
This package is deprecated?Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 45/100
JuliaMath/Calculus.jl#153 · 2 commenti · 5 reazioni ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 28/100
JuliaMath/Calculus.jl#151 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
JuliaMath/Calculus.jl#150 ·
-
Gradients, second derivatives and hessians at pi not workingForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
JuliaMath/Calculus.jl#144 ·
Tutte le issue di JuliaMath/Calculus.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Sienna-Platform/InfrastructureSystems.jl#675 ·
I maintainer di solito rispondono entro 2 giorni
-
TargetEncoder reuses the first level's shrinkage factor for all levels when m > 0Forse già presa @parth-patel010 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
JuliaAI/MLJTransforms.jl#95 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
SciML/RecursiveArrayTools.jl#687 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
SciML/Corleone.jl#179 ·
I maintainer di solito rispondono entro 1 giorno
-
Setup Aqua.jlAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
JuliaUQ/UncertaintyQuantification.jl#363 ·
I maintainer di solito rispondono entro 1 giorno