use `HessianConfig` to calculate gradients?
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 42/100
Rechercherichtung
Beginne damit, die vorhandenen Einstiegspunkte HessianConfig, DiffResults.HessianResult, GradientConfig und gradient! nachzuverfolgen, um zu verstehen, wie die Konfiguration des zwischengespeicherten Jacobis verwendet wird. Vergleiche den vorgeschlagenen Pfad von HessianConfig zu gradient mit der vorhandenen Verarbeitung von Gradient-Ergebnissen und überprüfe anschließend, dass gradient!(hresult, f, x, hconfig) dieselben Gradienten liefert und dabei den Cache wiederverwendet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Hello,
Recently i came across with a problem in which already had a hessian cache, (HessianConfig + DiffResults.HessianResult), but it seems there aren't any methods for calculating for using HessianConfig (and HessianResult) when calculating gradients (of the same function with the same number and type of arguments).
I did this dirty hack to allow calculating gradients with HessianConfig + HessianResult:
hresult,hconfig = cache
h_jconfig = hconfig.jacobian_config
seeds = h_jconfig.seeds
duals = h_jconfig.duals[1]
gconfig = ForwardDiff.GradientConfig{Nothing,eltype(aux),length(seeds),typeof(duals)}(seeds,duals)
gresult = ForwardDiff.MutableDiffResult(result.value,(result.derivs[1],))
It works for me, but it could be generalized (by passing the adequate function argument, for example)
It would be much easier to just do ForwardDiff.gradient!(hresult,f,x,hconfig) instead.
- Vorherrschende Sprache
- Julia
- Sterne
- 1k
- Forks
- 162
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus JuliaDiff/ForwardDiff.jl
-
missing floatmin, floatmax, and issubnormal for DualEvtl. vergeben @devmotion hat das vor 16 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
JuliaDiff/ForwardDiff.jl#852 · 6 Kommentare ·
-
`fma` and `muladd` ignore NaN-safe modeEvtl. vergeben @devmotion hat das vor 2 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
JuliaDiff/ForwardDiff.jl#860 ·
-
Enable NaN-safe mode by defaultEvtl. vergeben @devmotion hat das vor 4 Tagen übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
JuliaDiff/ForwardDiff.jl#857 · 1 Reaktion ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 52/100
JuliaDiff/ForwardDiff.jl#854 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 75/100
JuliaDiff/ForwardDiff.jl#849 ·
Alle Issues in JuliaDiff/ForwardDiff.jl
Ähnliche Issues
-
enhancement good first issue help wanted
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 82/100
-
Precompilation fails on Julia 1.14 nightly: HessenbergQ lmul! methods overwrite LinearAlgebra'sOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
JuliaLinearAlgebra/GenericLinearAlgebra.jl#183 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
JuliaGPU/KernelAbstractions.jl#897 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
oscar-system/GAP.jl#1455 ·
Maintainer antworten meist innerhalb von 1 Tag