-
-
Notifications
You must be signed in to change notification settings - Fork 217
Closed
Description
These two probably unrelated things work fine on 1.5, but give errors on 1.6 or master.
First, only for long enough generators:
julia> using Zygote, LinearAlgebra
julia> gradient(x -> sum(norm, collect(eachcol(x))), rand(3,4))[1]
3×4 Matrix{Float64}:
0.0980459 0.916691 0.397663 0.548254
0.78843 0.216233 0.900898 0.0887359
0.60726 0.336038 0.173914 0.831591
julia> gradient(x -> sum(norm, collect(eachcol(x))), rand(3,400))[1] # only size changed
ERROR: Can't differentiate loopinfo expression
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] macro expansion
@ ./simdloop.jl:79 [inlined]
[3] Pullback
@ ./reduce.jl:245 [inlined]
[4] (::typeof(∂(mapreduce_impl)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
[5] Pullback
@ ./reduce.jl:259 [inlined]
[6] (::typeof(∂(mapreduce_impl)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
[7] Pullback
@ ./reduce.jl:417 [inlined]
[8] (::typeof(∂(_mapreduce)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
[9] Pullback
@ ./reducedim.jl:330 [inlined]
[10] Pullback
@ ./reducedim.jl:322 [inlined]
[11] (::typeof(∂(mapreduce)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
[12] Pullback
@ ./reducedim.jl:890 [inlined]
[13] (::typeof(∂(#_sum#717)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
[14] Pullback
@ ./reducedim.jl:890 [inlined]
[15] (::typeof(∂(_sum)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
[16] Pullback
@ ./reducedim.jl:886 [inlined]
[17] Pullback
@ ./REPL[288]:1 [inlined]
[18] (::typeof(∂(#359)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
[19] (::Zygote.var"#43#44"{typeof(∂(#359))})(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface.jl:40
[20] gradient(f::Function, args::Matrix{Float64})
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface.jl:58
[21] top-level scope
@ REPL[288]:1
And second, seemingly for any structured matrix:
julia> using Zygote, LinearAlgebra
julia> gradient(x -> sum(sin, Diagonal(x)), rand(2))[1]
ERROR: ArgumentError: cannot set off-diagonal entry (1, 2) to a nonzero value (1.0)
Stacktrace:
[1] setindex!
@ ~/.julia/dev/julia/usr/share/julia/stdlib/v1.7/LinearAlgebra/src/diagonal.jl:101 [inlined]
...
[10] materialize!
@ ./broadcast.jl:890 [inlined]
[11] (::Zygote.var"#382#384"{Diagonal{Float64, Vector{Float64}}, Tuple{CartesianIndex{2}}})(dy::Float64)
@ Zygote ~/.julia/dev/Zygote/src/lib/array.jl:42
[12] (::Zygote.var"#2221#back#378"{Zygote.var"#382#384"{Diagonal{Float64, Vector{Float64}}, Tuple{CartesianIndex{2}}}})(Δ::Float64)
@ Zygote ~/.julia/packages/ZygoteRules/OjfTt/src/adjoint.jl:59
[13] Pullback
@ ./abstractarray.jl:1090 [inlined]
[14] (::typeof(∂(iterate)))(Δ::Tuple{Float64, Tuple{Nothing, NamedTuple{(:I,), Tuple{Tuple{Nothing, Nothing}}}}})
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
...
[22] (::typeof(∂(mapfoldl)))(Δ::Float64)
@ Zygote ~/.julia/dev/Zygote/src/compiler/interface2.jl:0
...
[36] top-level scope
@ REPL[289]:1
julia> gradient(x -> sum(sin, Symmetric(x)), rand(2,2))[1]
ERROR: ArgumentError: Cannot set a non-diagonal index in a symmetric matrix
Stacktrace:
[1] setindex!
@ ~/.julia/dev/julia/usr/share/julia/stdlib/v1.7/LinearAlgebra/src/symmetric.jl:225 [inlined]
...
ForceBru, Wu-Chenyang, jeremiedb and haozhangphd
Metadata
Metadata
Assignees
Labels
No labels