Derivative issue with DiffResults and nested arrays
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Reproduisez les deux exemples de l’issue et comparez les entrées de la stack trace dans DiffResults.jl:167, apiutils.jl:5 et derivative.jl:49. Examinez la manière dont value! et extract_value! gèrent les tableaux imbriqués, puis confirmez que derivative! s’achève pour g(x) sans l’erreur de conversion signalée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The following code works:
using ForwardDiff
g(x) = [[x^2, sqrt(x)]]
println(ForwardDiff.derivative(g, 2))
But this code:
using DiffResults
using ForwardDiff
g(x) = [[x^2, sqrt(x)]]
result = DiffResults.DiffResult(similar(g(2)), similar(g(2)))
result = ForwardDiff.derivative!(result, g, 2)
println(result)
Leads to a runtime error:
ERROR: LoadError: MethodError: no method matching Float64(::ForwardDiff.Dual{ForwardDiff.Tag{typeof(g), Int64}, Float64, 1})
Closest candidates are:
(::Type{T})(::Real, ::RoundingMode) where T<:AbstractFloat
@ Base rounding.jl:207
(::Type{T})(::T) where T<:Number
@ Core boot.jl:792
Float64(::IrrationalConstants.Fourπ)
@ IrrationalConstants C:\Users\bruno\.julia\packages\IrrationalConstants\vp5v4\src\macro.jl:112
...
Stacktrace:
[1] convert(::Type{Float64}, x::ForwardDiff.Dual{ForwardDiff.Tag{typeof(g), Int64}, Float64, 1})
@ Base .\number.jl:7
[2] setindex!(A::Vector{Float64}, x::ForwardDiff.Dual{ForwardDiff.Tag{typeof(g), Int64}, Float64, 1}, i1::Int64)
@ Base .\array.jl:1021
[3] _unsafe_copyto!(dest::Vector{Float64}, doffs::Int64, src::Vector{ForwardDiff.Dual{…}}, soffs::Int64, n::Int64)
@ Base .\array.jl:299
[4] unsafe_copyto!
@ .\array.jl:353 [inlined]
[5] _copyto_impl!
@ .\array.jl:376 [inlined]
[6] copyto!
@ .\array.jl:363 [inlined]
[7] copyto!
@ .\array.jl:385 [inlined]
[8] copyto_axcheck!
@ .\abstractarray.jl:1177 [inlined]
[9] Vector{Float64}(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(g), Int64}, Float64, 1}})
@ Base .\array.jl:673
[10] convert
@ .\array.jl:665 [inlined]
[11] setindex!
@ .\array.jl:1021 [inlined]
[12] map!
@ .\abstractarray.jl:3279 [inlined]
[13] value!
@ C:\Users\bruno\.julia\packages\DiffResults\YLo25\src\DiffResults.jl:167 [inlined]
[14] extract_value!
@ C:\Users\bruno\.julia\packages\ForwardDiff\UBbGT\src\apiutils.jl:5 [inlined]
[15] derivative!(result::DiffResults.MutableDiffResult{1, Vector{Vector{…}}, Tuple{Vector{…}}}, f::typeof(g), x::Int64)
@ ForwardDiff C:\Users\bruno\.julia\packages\ForwardDiff\UBbGT\src\derivative.jl:49
Adding the following line fixes this problem:
ForwardDiff.value(::Type{T}, x::AbstractArray) where T = map(d -> ForwardDiff.value(T, d), x)
- Langage dominant
- Julia
- Étoiles
- 1k
- Forks
- 162
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de JuliaDiff/ForwardDiff.jl
-
missing floatmin, floatmax, and issubnormal for DualPeut-être pris @devmotion l’a pris il y a 16 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
JuliaDiff/ForwardDiff.jl#852 · 6 commentaires ·
-
`fma` and `muladd` ignore NaN-safe modePeut-être pris @devmotion l’a pris il y a 2 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
JuliaDiff/ForwardDiff.jl#860 ·
-
Enable NaN-safe mode by defaultPeut-être pris @devmotion l’a pris il y a 4 jours. Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JuliaDiff/ForwardDiff.jl#857 · 1 réaction ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
JuliaDiff/ForwardDiff.jl#854 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 75/100
JuliaDiff/ForwardDiff.jl#849 ·
Toutes les issues de JuliaDiff/ForwardDiff.jl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
JuliaGPU/KernelAbstractions.jl#897 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
oscar-system/GAP.jl#1455 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
JuliaAI/MLJTransforms.jl#85 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
SciML/OrdinaryDiffEq.jl#4875 ·
Les mainteneurs répondent en général sous 4 jours