Incorrect Gradient Computation when Nesting Zygote over TaylorDiff Description
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
Direzione di ricerca
Inizia eseguendo l’esempio minimo con le versioni segnalate di Julia, TaylorDiff e Zygote, concentrandoti su TaylorDiff.derivative annidato all’interno di Zygote.gradient. Traccia l’interazione tra questi punti di ingresso e aggiungi un test di regressione per l’esempio. Il lavoro è completato quando il gradiente calcolato non è più composto interamente da zeri e corrisponde al risultato non nullo previsto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug Report: Incorrect Gradient Computation when Nesting Zygote over TaylorDiff
Description
When attempting to compute the gradient of a function that internally uses TaylorDiff for differentiation, Zygote returns incorrect results (all zeros).
Minimal Working Example
The following mwe demonstrates the issue:
import TaylorDiff
import Zygote
# Define a function
f(x) = sum(x .^ 2)
# Define function to return unit vectors
unit_vectors(x, i) = [j == i ? one(eltype(x)) : zero(eltype(x)) for j in 1:length(x)]
# Define input
x = Float64.(collect(1:5))
# Compute unit vectors for each direction to compute the gradient
e_vectors = [unit_vectors(x, i) for i in 1:length(x)]
# Define a function to compute gradient using TaylorDiff
∇f_taylor(f, x) = TaylorDiff.derivative.(Ref(f), Ref(x), e_vectors, Ref(Val(1)))
# Evaluate gradient
∇f_taylor(f, x) # Returns 5-element Vector{Float64}: 2.0 4.0 6.0 8.0 10.0 (correct)
# Define a simple function of the gradient with TaylorDiff
g_taylor(x) = sum(∇f_taylor(f, x))
# Evaluate gradient
g_taylor(x) # returns 30.0 (Correct)
# Compute gradient using Zygote
Zygote.gradient(g_taylor, x) # returns ([0.0, 0.0, 0.0, 0.0, 0.0],) (incorrect)
The function g_taylor(x) computes the sum of the gradient of f(x), which should return a nonzero result. Applying Zygote.gradient to g_taylor(x) should correctly compute the derivative.
Instead of returning the correct gradient, Zygote.gradient(g_taylor, x) returns all zeros.
Additional Information
Julia Version: 1.11.3
TaylorDiff Version: v0.3.1
Zygote Version: v0.6.75
- Lingua principale
- Julia
- Stelle
- 83
- Fork
- 12
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
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/TaylorDiff.jl
-
Ambiguity with forwarddiff ?Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaDiff/TaylorDiff.jl#103 · 6 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
JuliaDiff/TaylorDiff.jl#102 · 3 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
JuliaDiff/TaylorDiff.jl#99 · 3 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
JuliaDiff/TaylorDiff.jl#95 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaDiff/TaylorDiff.jl#93 ·
Tutte le issue di JuliaDiff/TaylorDiff.jl
Issue simili
-
OptimizationCUTEst jobs fail: gfortran not installed on the runnerForse già presa @ChrisRackauckas-Claude l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
SciML/SciMLBenchmarks.jl#1946 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
JuliaSmoothOptimizers/NCL.jl#101 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
WaterLily-jl/WaterLily.jl#367 ·
I maintainer di solito rispondono entro 1 giorno